Skip to content

Instantly share code, notes, and snippets.

@exjam
Created September 29, 2017 20:06
Show Gist options
  • Save exjam/7784b3a49b9789879e457aa0a442e9af to your computer and use it in GitHub Desktop.
Save exjam/7784b3a49b9789879e457aa0a442e9af to your computer and use it in GitHub Desktop.
signed int net::readHostsFile()
{
int *v0; // r2
int v1; // r1
int v2; // r0
signed int v3; // r6
int v4; // r4
int k; // r3
_DWORD *i; // r5
_DWORD *j; // r4
int v9; // r0
int v10; // r1
int v11; // r0
unsigned int v12; // r4
int v13; // r0
int v14; // r0
int v15; // r4
unsigned __int8 *v16; // r0
unsigned __int8 *v17; // r10
int v18; // r3
int v19; // r2
int v20; // r1
bool v21; // r6
unsigned __int8 *v22; // r5
int v23; // r0
int v24; // t1
_BOOL1 v25; // zf
unsigned int v26; // r3
unsigned int v27; // r1
unsigned int v28; // r4
unsigned int v29; // r6
unsigned int v30; // r9
unsigned int v31; // r8
signed int v32; // r11
_BOOL1 v33; // zf
char *v34; // r3
int v35; // t1
_BOOL1 v36; // zf
int v37; // t1
_BOOL1 v38; // zf
unsigned int v39; // r2
int v40; // r3
int v41; // t1
_BOOL1 v42; // zf
char *v43; // r3
char *v44; // r3
char v45; // [sp+13h] [bp-441h]
__int16 v46; // [sp+292h] [bp-1C2h]
char v47; // [sp+313h] [bp-141h]
char v48; // [sp+394h] [bp-C0h]
u32 size; // [sp+3A4h] [bp-B0h]
int v50; // [sp+3F8h] [bp-5Ch]
int v51; // [sp+3FCh] [bp-58h]
int v52; // [sp+400h] [bp-54h]
int v53; // [sp+404h] [bp-50h]
int v54; // [sp+408h] [bp-4Ch]
int v55; // [sp+40Ch] [bp-48h]
int v56; // [sp+410h] [bp-44h]
int v57; // [sp+414h] [bp-40h]
int v58; // [sp+418h] [bp-3Ch]
int v59; // [sp+41Ch] [bp-38h]
int v60; // [sp+420h] [bp-34h]
int v61; // [sp+424h] [bp-30h]
int v62; // [sp+428h] [bp-2Ch]
int v63; // [sp+42Ch] [bp-28h]
char v64; // [sp+430h] [bp-24h]
SysCall_0x7A_IOS_NET();
if ( v2 == 30 )
return 0;
v4 = dword_127918B4;
if ( dword_127918B4 )
{
v3 = 14;
}
else
{
memset_0(&dword_127918BC, dword_127918B4, 0xCu);
dword_127918C0 = v4;
dword_127918B8 = v4;
dword_127918C4 = v4;
dword_127918B4 = (int)&dword_127918BC;
v11 = sub_123C0C3C();
v12 = v11;
if ( v11 || (dword_127918AC = 1, v13 = sub_123C0A1C(0), v0 = &dword_127918C8, dword_127918C8 = v13, v13 < 0) )
{
v3 = 7;
}
else if ( net::FSAMount(v13, "/dev/sdcard01", "/vol/net/hosts", v12, v12, v12) )
{
v3 = 8;
}
else
{
dword_127918B0 = 1;
v57 = 0;
v50 = 0;
v51 = 0;
v52 = 0;
v53 = 0;
v54 = 0;
v55 = 0;
v56 = 0;
if ( sub_123CB044(dword_127918C8, "/vol/net/hosts") || sub_123CADA8(dword_127918C8, &v45, (unsigned int)byte_27F) )
{
v3 = 6;
}
else
{
sub_123E3BB8(&v50, "cafe/net/etc/hosts");
if ( net::FSAOpenFile(dword_127918C8, &v50, "r", &v63) )
{
v3 = 9;
}
else
{
v14 = net::FSAStatFile(dword_127918C8, v63, &v48);
v15 = v14;
if ( v14 )
{
v3 = 10;
}
else
{
dword_127918B8 = size;
v16 = (unsigned __int8 *)SysCall_0x28_IOS_NET(51967, size, 0x40u);
v17 = v16;
if ( v16 )
{
memset_0(v16, v15, dword_127918B8);
if ( net::FSAReadFile(dword_127918C8, (unsigned int)v17, 1u, dword_127918B8, v63, v15) >= 0 )
{
sub_123CCFF4("NETCONF_HOSTS: Read hosts file\n", v20, v19, v18);
if ( *v17 && dword_127918B8 )
{
v21 = v15;
v22 = v17;
while ( 1 )
{
v58 = 0;
v59 = 0;
v60 = 0;
v61 = 0;
memset_0(&v47, 0, 0x81u);
memset_0(&v46, 0, 0x81u);
if ( v21 )
{
v23 = *v22;
if ( v23 == '\n' )
{
v24 = (v22++)[1];
v23 = v24;
}
}
else
{
v23 = *v22;
}
v25 = v23 == '\n';
if ( v23 != '\n' )
v25 = v23 == '\r';
if ( !v25 )
{
if ( v23 )
{
v26 = v22 - v17;
v27 = dword_127918B8;
if ( dword_127918B8 > (unsigned int)(v22 - v17) )
break;
}
}
LABEL_97:
v37 = (v22++)[1];
if ( !v37 || v22 - v17 >= (unsigned int)dword_127918B8 )
goto LABEL_126;
v21 = v23 == '\r';
}
v28 = 0;
v29 = 0;
v30 = 0;
v31 = 0;
v32 = 0;
do
{
if ( v23 == '#' )
{
v32 = 1;
}
else
{
v33 = v23 == ' ';
if ( v23 != ' ' )
v33 = v23 == '\t';
if ( v33 )
{
if ( !v32 )
{
v38 = v23 == '\t';
if ( v23 != '\t' )
v38 = v23 == ' ';
if ( v38 && v26 < v27 )
{
v39 = v26;
do
{
v41 = (v22++)[1];
v40 = v41;
++v39;
v42 = v41 == '\t';
if ( v41 != '\t' )
v42 = v40 == ' ';
}
while ( v42 && v39 < v27 );
}
--v22;
if ( v31 )
{
if ( v31 == 1 )
{
sub_123B0D44(&v58, &v62);
if ( sub_1230CB98(v62, &v47, v28) < 0 )
goto LABEL_120;
v31 = 2;
}
else if ( v31 == 2 )
{
if ( sub_1230CC38((char *)&v46, v29) < 0 )
goto LABEL_101;
memset_0(&v46, 0, 0x81u);
v29 = 0;
v30 = 0;
}
}
else
{
if ( !sub_123B0D44(&v58, &v62) )
{
LABEL_125:
v3 = 11;
goto LABEL_86;
}
v30 = 0;
v31 = 1;
}
}
}
else if ( !v32 )
{
if ( v31 == 1 )
{
if ( v28 > 0x7F )
goto LABEL_120;
v44 = &v64 + v28++;
*(v44 - 285) = v23;
}
else if ( v31 < 1 )
{
if ( v30 > 0xF )
goto LABEL_125;
v43 = &v64 + v30++;
*(v43 - 24) = v23;
}
else
{
if ( v31 != 2 )
{
v3 = 1;
goto LABEL_86;
}
if ( v29 > 0x7F )
goto LABEL_101;
v34 = &v64 + v29++;
*(v34 - 414) = v23;
}
}
}
v35 = (v22++)[1];
v23 = v35;
v36 = v35 == 13;
if ( v35 != 13 )
v36 = v23 == 10;
if ( v36 )
break;
if ( !v23 )
break;
v27 = dword_127918B8;
v26 = v22 - v17;
}
while ( v22 - v17 < (unsigned int)dword_127918B8 );
if ( v31 != 1 || (sub_123B0D44(&v58, &v62), sub_1230CB98(v62, &v47, v28) >= 0) )
{
if ( !v29 || sub_1230CC38((char *)&v46, v29) >= 0 )
{
v23 = *v22;
goto LABEL_97;
}
LABEL_101:
v3 = 13;
goto LABEL_86;
}
LABEL_120:
v3 = 12;
}
else
{
LABEL_126:
v3 = 0;
}
}
else
{
v3 = 10;
}
LABEL_86:
sc0x29_net_IOS_Free(51967, v17);
}
else
{
v3 = 4;
}
}
}
v1 = v63;
if ( v63 > 0 && net::FSACloseFile(dword_127918C8, v63) )
v3 = 10;
}
}
}
if ( dword_127918B0 )
net::FSAUnmount(dword_127918C8, "/vol/net/hosts", 0);
if ( dword_127918C8 >= 0 )
sub_123C0948(dword_127918C8);
k = dword_127918AC;
if ( dword_127918AC )
sub_123BF294();
switch ( v3 )
{
case 0:
goto LABEL_22;
case 1:
sub_123CCFF4("NETCONF_HOSTS: error occured for some reason (NG).\n", v1, (int)v0, k);
goto LABEL_14;
case 2:
sub_123CCFF4("NETCONF_HOSTS: error occured for some reason (INVALID).\n", v1, (int)v0, k);
goto LABEL_14;
case 3:
sub_123CCFF4("NETCONF_HOSTS: hosts_db is not initialized.\n", v1, (int)v0, k);
goto LABEL_14;
case 4:
sub_123CCFF4("NETCONF_HOSTS: failed to allocate memory.\n", v1, (int)v0, k);
goto LABEL_14;
case 5:
sub_123CCFF4("NETCONF_HOSTS: searched file but no entry was found.\n", v1, (int)v0, k);
goto LABEL_14;
case 6:
sub_123CCFF4("NETCONF_HOSTS: failed with FSA API for some reason.\n", v1, (int)v0, k);
goto LABEL_14;
case 7:
sub_123CCFF4("NETCONF_HOSTS: failed to initialize FSA.\n", v1, (int)v0, k);
goto LABEL_14;
case 8:
sub_123CCFF4("NETCONF_HOSTS: SD card is not found.\n", v1, (int)v0, k);
goto LABEL_14;
case 9:
sub_123CCFF4("NETCONF_HOSTS: no hosts file was found.\n", v1, (int)v0, k);
goto LABEL_14;
case 10:
sub_123CCFF4("NETCONF_HOSTS: error occured with file operation.\n", v1, (int)v0, k);
goto LABEL_14;
case 11:
sub_123CCFF4("NETCONF_HOSTS: invalid IP address in hosts file.\n", v1, (int)v0, k);
goto LABEL_14;
case 12:
sub_123CCFF4("NETCONF_HOSTS: invalid host name in hosts file.\n", v1, (int)v0, k);
goto LABEL_14;
case 13:
sub_123CCFF4("NETCONF_HOSTS: invalid aliases in hosts file.\n", v1, (int)v0, k);
goto LABEL_14;
case 14:
sub_123CCFF4("NETCONF_HOSTS: hosts entries were already loaded before.\n", v1, (int)v0, k);
break;
default:
break;
}
sub_123CCFF4("NETCONF_HOSTS: unkown error.\n", v1, (int)v0, k);
LABEL_22:
if ( v3 )
{
LABEL_14:
for ( i = *(_DWORD **)(dword_127918B4 + 4); i; --*(_DWORD *)dword_127918B4 )
{
for ( j = (_DWORD *)i[34]; j; j = (_DWORD *)j[33] )
sc0x29_net_IOS_Free(51967, j);
sc0x29_net_IOS_Free(51967, i);
i = (_DWORD *)i[35];
}
memset_0(&dword_127918BC, 0, 0xCu);
dword_127918B8 = 0;
dword_127918B4 = 0;
}
else
{
v9 = dword_127918C0;
if ( dword_127918C0 )
{
v10 = 0;
do
{
for ( k = *(_DWORD *)(v9 + 136); k; v10 += 136 )
k = *(_DWORD *)(k + 132);
v9 = *(_DWORD *)(v9 + 140);
v10 += 144;
}
while ( v9 );
}
else
{
v10 = 0;
}
sub_123CCFF4(
"NETCONF_HOSTS: Loaded hosts file from SD card (allocated %d bytes for database).\n",
v10,
(int)&dword_127918BC,
k);
}
return v3;
}
graph: {
title: "Graph of net::readHostsFile"
manhattan_edges: yes
layoutalgorithm: mindepth
finetuning: no
layout_downfactor: 100
layout_upfactor: 0
layout_nearfactor: 0
xlspace: 12
yspace: 30
// IDA palette
colorentry 32: 0 0 0
colorentry 33: 0 0 255
colorentry 34: 0 0 255
colorentry 35: 128 128 128
colorentry 36: 128 128 128
colorentry 37: 0 0 128
colorentry 38: 0 0 128
colorentry 39: 0 0 255
colorentry 40: 0 0 255
colorentry 41: 0 0 128
colorentry 42: 0 128 0
colorentry 43: 0 255 0
colorentry 44: 0 128 0
colorentry 45: 255 128 0
colorentry 46: 0 128 0
colorentry 47: 128 128 255
colorentry 48: 255 0 0
colorentry 49: 128 128 0
colorentry 50: 1 1 1
colorentry 51: 192 192 192
colorentry 52: 0 0 255
colorentry 53: 0 0 255
colorentry 54: 0 0 255
colorentry 55: 128 128 128
colorentry 56: 128 128 255
colorentry 57: 0 128 0
colorentry 58: 0 0 128
colorentry 59: 0 0 255
colorentry 60: 128 0 128
colorentry 61: 0 128 0
colorentry 62: 0 128 0
colorentry 63: 0 128 64
colorentry 64: 0 0 128
colorentry 65: 0 0 128
colorentry 66: 255 0 255
colorentry 67: 128 128 0
colorentry 68: 0 0 128
colorentry 69: 0 0 255
colorentry 70: 0 0 128
colorentry 71: 0 0 255
colorentry 72: 0 0 0
colorentry 73: 255 255 255
colorentry 74: 192 187 175
colorentry 75: 0 255 255
colorentry 76: 0 0 0
colorentry 77: 128 0 0
colorentry 78: 128 128 128
colorentry 79: 128 128 0
colorentry 80: 255 0 255
colorentry 81: 0 0 0
colorentry 82: 0 0 255
colorentry 83: 0 0 0
node: { title: "0" label: " 69net__readHostsFile 31:
STMFD SP!, {R4-R11,LR}
SUB SP, SP, #0x430
BL SysCall_0x7A_IOS_NET; int get_security_level()
CMP R0, #0x1E
MOVEQ R6, #0
BEQ loc_1230CDFC" vertical_order: 0 }
node: { title: "1" label: "LDR R7, =dword_127918B4
LDR R4, [R7]
CMP R4, #0
MOVNE R6, #0xE
BEQ loc_1230CF20" }
node: { title: "2" label: "LDR R12, =dword_127918B0
LDR R3, [R12]
CMP R3, #0
BNE loc_1230CE10" }
node: { title: "3" label: "LDR R3, =dword_127918C8
LDR R0, [R3]
CMP R0, #0
BLT loc_1230CD20" }
node: { title: "4" label: "BL sub_123C0948" }
node: { title: "5" label: "LDR R12, =dword_127918AC
LDR R3, [R12]
CMP R3, #0
BNE loc_1230CE08" }
node: { title: "6" label: "CMP R6, #0xE; switch 15 cases
LDRLS PC, [PC,R6,LSL#2]; switch jump" }
node: { title: "7" label: "B loc_1230CE30; jumptable 1230CD34 default case" }
node: { title: "8" label: "LDR R0, =aNetconf_hostsE; jumptable 1230CD34 case 1
BL sub_123CCFF4" }
node: { title: "9" label: "LDR R3, [R7]
LDR R5, [R3,#4]
CMP R5, #0
BEQ loc_1230CDDC" }
node: { title: "10" label: "LDR R4, [R5,#0x88]
CMP R4, #0
BEQ loc_1230CDB4" }
node: { title: "11" label: "MOV R1, R4; ptr
LDR R0, =0xCAFF; heapid
BL sc0x29_net_IOS_Free; void IOS_Free(int heapid, void *ptr)
LDR R4, [R4,#0x84]
CMP R4, #0
BNE loc_1230CD9C" }
node: { title: "12" label: "MOV R1, R5; ptr
LDR R0, =0xCAFF; heapid
BL sc0x29_net_IOS_Free; void IOS_Free(int heapid, void *ptr)
LDR R2, [R7]
LDR R5, [R5,#0x8C]
LDR R3, [R2]
CMP R5, #0
SUB R3, R3, #1
STR R3, [R2]
BNE loc_1230CD90" }
node: { title: "13" label: "MOV R2, #0xC
LDR R0, =dword_127918BC
MOV R1, #0
BL memset_0
LDR R3, =dword_127918B8
MOV R2, #0
STR R2, [R3]
STR R2, [R7]" }
node: { title: "14" label: "MOV R0, R6
ADD SP, SP, #0x430
LDMFD SP!, {R4-R11,PC}" vertical_order: 104 }
node: { title: "15" label: "BL sub_123BF294
B loc_1230CD30" }
node: { title: "16" label: "LDR R2, =dword_127918C8
LDR R1, =aVolNetHosts; \"/vol/net/hosts\"
LDR R0, [R2]
MOV R2, #0
BL net__FSAUnmount
B loc_1230CD0C" }
node: { title: "17" label: "LDR R0, =aNetconf_hostsH; jumptable 1230CD34 case 14
BL sub_123CCFF4" }
node: { title: "18" label: "LDR R0, =aNetconf_hostsU; jumptable 1230CD34 default case
BL sub_123CCFF4" }
node: { title: "19" label: "CMP R6, #0; jumptable 1230CD34 case 0
BNE loc_1230CD80" }
node: { title: "20" label: "LDR R2, =dword_127918BC
LDR R0, [R2,#(dword_127918C0 - 0x127918BC)]
CMP R0, #0
MOVEQ R1, R6
BEQ loc_1230CE84" }
node: { title: "21" label: "MOV R1, R6" }
node: { title: "22" label: "LDR R3, [R0,#0x88]
CMP R3, #0
BEQ loc_1230CE74" }
node: { title: "23" label: "LDR R3, [R3,#0x84]
ADD R1, R1, #0x88
CMP R3, #0
BNE loc_1230CE64" }
node: { title: "24" label: "LDR R0, [R0,#0x8C]
ADD R1, R1, #0x90
CMP R0, #0
BNE loc_1230CE58" }
node: { title: "25" label: "LDR R0, =aNetconf_hostsL; \"NETCONF_HOSTS: Loaded hosts file from S\"...
BL sub_123CCFF4
B loc_1230CDFC" }
node: { title: "26" label: "LDR R0, =aNetconf_hostsI; jumptable 1230CD34 case 11
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "27" label: "LDR R0, =aNetconf_host_0; jumptable 1230CD34 case 2
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "28" label: "LDR R0, =aNetconf_host_1; jumptable 1230CD34 case 3
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "29" label: "LDR R0, =aNetconf_host_2; jumptable 1230CD34 case 13
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "30" label: "LDR R0, =aNetconf_host_3; jumptable 1230CD34 case 12
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "31" label: "LDR R0, =aNetconf_host_4; jumptable 1230CD34 case 10
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "32" label: "LDR R0, =aNetconf_hostsN; jumptable 1230CD34 case 9
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "33" label: "LDR R0, =aNetconf_hostsS; jumptable 1230CD34 case 8
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "34" label: "LDR R0, =aNetconf_hostsF; jumptable 1230CD34 case 7
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "35" label: "LDR R0, =aNetconf_host_5; jumptable 1230CD34 case 6
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "36" label: "LDR R0, =aNetconf_host_6; jumptable 1230CD34 case 5
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "37" label: "LDR R0, =aNetconf_host_7; jumptable 1230CD34 case 4
BL sub_123CCFF4
B loc_1230CD80" }
node: { title: "38" label: "MOV R1, R4
MOV R2, #0xC
LDR R0, =dword_127918BC
BL memset_0
LDR R3, =dword_127918BC
LDR R2, =dword_127918B8
STR R4, [R3,#(dword_127918C0 - 0x127918BC)]
STR R4, [R2]
STR R4, [R3,#(dword_127918C4 - 0x127918BC)]
STR R3, [R7]
BL sub_123C0C3C
SUBS R4, R0, #0
BEQ loc_1230CF5C" }
node: { title: "39" label: "MOV R6, #7
B loc_1230CCFC" }
node: { title: "40" label: "LDR R12, =dword_127918AC
MOV R5, #1
STR R5, [R12]
BL sub_123C0A1C
LDR R2, =dword_127918C8
CMP R0, #0
STR R0, [R2]
BLT loc_1230CF54" }
node: { title: "41" label: "MOV R3, R4
LDR R1, =aDevSdcard01; \"/dev/sdcard01\"
LDR R2, =aVolNetHosts; \"/vol/net/hosts\"
STR R4, [SP,#0x454+var_454]
STR R4, [SP,#0x454+var_450]
BL net__FSAMount
SUBS R3, R0, #0
MOVNE R6, #8
BNE loc_1230CCFC" }
node: { title: "42" label: "LDR R12, =dword_127918C8
LDR R2, =dword_127918B0
LDR R0, [R12]
LDR R1, =aVolNetHosts; \"/vol/net/hosts\"
STR R5, [R2]
STR R3, [SP,#0x454+var_40]
STR R3, [SP,#0x454+var_5C]
STR R3, [SP,#0x454+var_58]
STR R3, [SP,#0x454+var_54]
STR R3, [SP,#0x454+var_50]
STR R3, [SP,#0x454+var_4C]
STR R3, [SP,#0x454+var_48]
STR R3, [SP,#0x454+var_44]
BL sub_123CB044
CMP R0, #0
BEQ loc_1230CFE8" }
node: { title: "43" label: "MOV R6, #6
B loc_1230CCFC" }
node: { title: "44" label: "LDR R3, =dword_127918C8
ADD R1, SP, #0x454+var_434
SUB R1, R1, #0xD
LDR R0, [R3]
LDR R2, =byte_27F
BL sub_123CADA8
LDR R5, =dword_127918C8
CMP R0, #0
BNE loc_1230CFE0" }
node: { title: "45" label: "ADD R4, SP, #0x454+var_5C
LDR R1, =aCafeNetEtcHost; \"cafe/net/etc/hosts\"
MOV R0, R4
BL sub_123E3BB8
ADD R3, SP, #0x454+var_34
MOV R1, R4
LDR R0, [R5]
LDR R2, =(aCur_etheraddr+0xC); \"r\"
ADD R3, R3, #0xC
BL net__FSAOpenFile
CMP R0, #0
MOVNE R6, #9
BEQ loc_1230D064" }
node: { title: "46" label: "LDR R1, [SP,#0x454+var_28]
CMP R1, #0
BLE loc_1230CCFC" }
node: { title: "47" label: "LDR R2, =dword_127918C8
LDR R0, [R2]
BL net__FSACloseFile
CMP R0, #0
MOVNE R6, #0xA
B loc_1230CCFC" }
node: { title: "48" label: "LDR R0, [R5]
LDR R1, [SP,#0x454+var_28]
ADD R2, SP, #0x454+var_C0
BL net__FSAStatFile
SUBS R4, R0, #0
MOVNE R6, #0xA
BNE loc_1230D040" }
node: { title: "49" label: "LDR R3, [SP,#0x454+size]
LDR R12, =dword_127918B8
LDR R0, =0xCAFF; heapid
MOV R1, R3; size
MOV R2, #0x40 ; '@'; align
STR R3, [R12]
BL SysCall_0x28_IOS_NET; void* heap_alloc_aligned(int heapid, u32 size, u32 align)
LDR R6, =dword_127918B8
SUBS R10, R0, #0
MOVEQ R6, #4
BEQ loc_1230D040" }
node: { title: "50" label: "LDR R2, [R6]
MOV R1, R4
BL memset_0
LDR R3, [R6]
LDR R0, [R5]
LDR R12, [SP,#0x454+var_28]
MOV R1, R10
MOV R2, #1
STR R12, [SP,#0x454+var_454]
STR R4, [SP,#0x454+var_450]
BL net__FSAReadFile
CMP R0, #0
MOVLT R6, #0xA
BLT loc_1230D1E4" }
node: { title: "51" label: "LDR R0, =aNetconf_hostsR; \"NETCONF_HOSTS: Read hosts file\\n\"
BL sub_123CCFF4
LDRB R3, [R10]
CMP R3, #0
BEQ loc_1230D394" }
node: { title: "52" label: "LDR R3, [R6]
CMP R3, #0
BEQ loc_1230D394" }
node: { title: "53" label: "ADD R2, SP, #0x454+var_140
ADD R3, SP, #0x454+var_1C0
SUB R2, R2, #1
SUB R3, R3, #2
MOV R6, R4
MOV R5, R10
STR R2, [SP,#0x454+var_448]
STR R3, [SP,#0x454+var_44C]" }
node: { title: "54" label: "MOV R4, #0
MOV R2, #0x81
MOV R1, R4
LDR R0, [SP,#0x454+var_448]
STR R4, [SP,#0x454+var_3C]
STR R4, [SP,#0x454+var_38]
STR R4, [SP,#0x454+var_34]
STR R4, [SP,#0x454+var_30]
BL memset_0
LDR R0, [SP,#0x454+var_44C]
MOV R1, R4
MOV R2, #0x81
BL memset_0
CMP R6, R4
LDREQB R0, [R5]
BEQ loc_1230D170" }
node: { title: "55" label: "LDRB R0, [R5]
CMP R0, #0xA
LDREQB R0, [R5,#1]!" }
node: { title: "56" label: "CMP R0, #0xA
CMPNE R0, #0xD
BEQ loc_1230D24C" }
node: { title: "57" label: "CMP R0, #0
BEQ loc_1230D24C" }
node: { title: "58" label: "LDR R12, =dword_127918B8
RSB R3, R10, R5
LDR R1, [R12]
CMP R1, R3
BLS loc_1230D24C" }
node: { title: "59" label: "MOV R4, #0
MOV R6, R4
MOV R9, R4
MOV R8, R4
MOV R11, R4" }
node: { title: "60" label: "CMP R0, #0x23 ; '#'
MOVEQ R11, #1
BEQ loc_1230D20C" }
node: { title: "61" label: "CMP R0, #0x20 ; ' '
CMPNE R0, #9
BEQ loc_1230D298" }
node: { title: "62" label: "CMP R11, #0
BNE loc_1230D20C" }
node: { title: "63" label: "CMP R8, #1
BEQ loc_1230D370" }
node: { title: "64" label: "BCC loc_1230D354" }
node: { title: "65" label: "CMP R8, #2
BEQ loc_1230D1F4" }
node: { title: "66" label: "MOV R6, #1" }
node: { title: "67" label: "MOV R1, R10; ptr
LDR R0, =0xCAFF; heapid
BL sc0x29_net_IOS_Free; void IOS_Free(int heapid, void *ptr)
B loc_1230D040" }
node: { title: "68" label: "CMP R6, #0x7F
BHI loc_1230D290" }
node: { title: "69" label: "ADD R2, SP, #0x454+var_24
ADD R3, R2, R6
ADD R6, R6, #1
STRB R0, [R3,#-0x19E]" }
node: { title: "70" label: "LDRB R0, [R5,#1]!
CMP R0, #0xD
CMPNE R0, #0xA
BEQ loc_1230D238" }
node: { title: "71" label: "CMP R0, #0
BEQ loc_1230D238" }
node: { title: "72" label: "LDR R3, =dword_127918B8
LDR R1, [R3]
RSB R3, R10, R5
CMP R3, R1
BCC loc_1230D1AC" }
node: { title: "73" label: "CMP R8, #1
BEQ loc_1230D320" }
node: { title: "74" label: "CMP R6, #0
BNE loc_1230D27C" }
node: { title: "75" label: "LDRB R0, [R5]" }
node: { title: "76" label: "LDRB R3, [R5,#1]!
CMP R3, #0
BEQ loc_1230D394" }
node: { title: "77" label: "LDR R12, =dword_127918B8
RSB R3, R10, R5
LDR R2, [R12]
CMP R3, R2
BCS loc_1230D394" }
node: { title: "78" label: "CMP R0, #0xD
MOVNE R6, #0
MOVEQ R6, #1
B loc_1230D124" }
node: { title: "79" label: "MOV R1, R6
LDR R0, [SP,#0x454+var_44C]
BL sub_1230CC38
CMP R0, #0
BGE loc_1230D248" }
node: { title: "80" label: "MOV R6, #0xD
B loc_1230D1E4" }
node: { title: "81" label: "CMP R11, #0
BNE loc_1230D20C" }
node: { title: "82" label: "CMP R0, #9
CMPNE R0, #0x20 ; ' '
BNE loc_1230D2D4" }
node: { title: "83" label: "CMP R3, R1
BCS loc_1230D2D4" }
node: { title: "84" label: "MOV R2, R3" }
node: { title: "85" label: "LDRB R3, [R5,#1]!
ADD R2, R2, #1
CMP R3, #9
CMPNE R3, #0x20 ; ' '
BNE loc_1230D2D4" }
node: { title: "86" label: "CMP R2, R1
BCC loc_1230D2B8" }
node: { title: "87" label: "CMP R8, #0
SUB R5, R5, #1
BEQ loc_1230D39C" }
node: { title: "88" label: "CMP R8, #1
BEQ loc_1230D3C4" }
node: { title: "89" label: "CMP R8, #2
BNE loc_1230D20C" }
node: { title: "90" label: "MOV R1, R6
LDR R0, [SP,#0x454+var_44C]
BL sub_1230CC38
CMP R0, #0
BLT loc_1230D290" }
node: { title: "91" label: "LDR R0, [SP,#0x454+var_44C]
MOV R1, #0
MOV R2, #0x81
BL memset_0
MOV R6, #0
MOV R9, R6
B loc_1230D20C" }
node: { title: "92" label: "ADD R1, SP, #0x454+var_34
ADD R0, SP, #0x454+var_44
ADD R1, R1, #8
ADD R0, R0, #8
BL sub_123B0D44
MOV R2, R4
LDR R0, [SP,#0x454+var_2C]
LDR R1, [SP,#0x454+var_448]
BL sub_1230CB98
CMP R0, #0
BGE loc_1230D240" }
node: { title: "93" label: "MOV R6, #0xC
B loc_1230D1E4" }
node: { title: "94" label: "CMP R9, #0xF
BHI loc_1230D38C" }
node: { title: "95" label: "ADD R2, SP, #0x454+var_24
ADD R3, R2, R9
ADD R9, R9, #1
STRB R0, [R3,#-0x18]
B loc_1230D20C" }
node: { title: "96" label: "CMP R4, #0x7F
BHI loc_1230D34C" }
node: { title: "97" label: "ADD R12, SP, #0x454+var_24
ADD R3, R12, R4
ADD R4, R4, #1
STRB R0, [R3,#-0x11D]
B loc_1230D20C" }
node: { title: "98" label: "MOV R6, #0xB
B loc_1230D1E4" }
node: { title: "99" label: "MOV R6, #0
B loc_1230D1E4" }
node: { title: "100" label: "ADD R0, SP, #0x454+var_44
ADD R1, SP, #0x454+var_34
ADD R0, R0, #8
ADD R1, R1, #8
BL sub_123B0D44
CMP R0, #0
BEQ loc_1230D38C" }
node: { title: "101" label: "MOV R9, R8
ADD R8, R8, #1
B loc_1230D20C" }
node: { title: "102" label: "ADD R1, SP, #0x454+var_34
ADD R0, SP, #0x454+var_44
ADD R1, R1, #8
ADD R0, R0, #8
BL sub_123B0D44
LDR R0, [SP,#0x454+var_2C]
LDR R1, [SP,#0x454+var_448]
MOV R2, R4
BL sub_1230CB98
CMP R0, #0
BLT loc_1230D34C" }
node: { title: "103" label: "ADD R8, R8, #1
B loc_1230D20C" }
// node 0
edge: { sourcename: "0" targetname: "1" label: "false" color: red }
edge: { sourcename: "0" targetname: "14" label: "true" color: darkgreen }
// node 1
edge: { sourcename: "1" targetname: "2" label: "false" color: red }
edge: { sourcename: "1" targetname: "38" label: "true" color: darkgreen }
// node 2
edge: { sourcename: "2" targetname: "3" label: "false" color: red }
edge: { sourcename: "2" targetname: "16" label: "true" color: darkgreen }
// node 3
edge: { sourcename: "3" targetname: "4" label: "false" color: red }
edge: { sourcename: "3" targetname: "5" label: "true" color: darkgreen }
// node 4
edge: { sourcename: "4" targetname: "5" }
// node 5
edge: { sourcename: "5" targetname: "6" label: "false" color: red }
edge: { sourcename: "5" targetname: "15" label: "true" color: darkgreen }
// node 6
edge: { sourcename: "6" targetname: "7" }
edge: { sourcename: "6" targetname: "8" }
edge: { sourcename: "6" targetname: "17" }
edge: { sourcename: "6" targetname: "19" }
edge: { sourcename: "6" targetname: "26" }
edge: { sourcename: "6" targetname: "27" }
edge: { sourcename: "6" targetname: "28" }
edge: { sourcename: "6" targetname: "29" }
edge: { sourcename: "6" targetname: "30" }
edge: { sourcename: "6" targetname: "31" }
edge: { sourcename: "6" targetname: "32" }
edge: { sourcename: "6" targetname: "33" }
edge: { sourcename: "6" targetname: "34" }
edge: { sourcename: "6" targetname: "35" }
edge: { sourcename: "6" targetname: "36" }
edge: { sourcename: "6" targetname: "37" }
// node 7
edge: { sourcename: "7" targetname: "18" }
// node 8
edge: { sourcename: "8" targetname: "9" }
// node 9
edge: { sourcename: "9" targetname: "10" label: "false" color: red }
edge: { sourcename: "9" targetname: "13" label: "true" color: darkgreen }
// node 10
edge: { sourcename: "10" targetname: "11" label: "false" color: red }
edge: { sourcename: "10" targetname: "12" label: "true" color: darkgreen }
// node 11
edge: { sourcename: "11" targetname: "12" label: "false" color: red }
edge: { sourcename: "11" targetname: "11" label: "true" color: darkgreen }
// node 12
edge: { sourcename: "12" targetname: "10" label: "true" color: darkgreen }
edge: { sourcename: "12" targetname: "13" label: "false" color: red }
// node 13
edge: { sourcename: "13" targetname: "14" }
// node 14
// node 15
edge: { sourcename: "15" targetname: "6" }
// node 16
edge: { sourcename: "16" targetname: "3" }
// node 17
edge: { sourcename: "17" targetname: "18" }
// node 18
edge: { sourcename: "18" targetname: "19" }
// node 19
edge: { sourcename: "19" targetname: "9" label: "true" color: darkgreen }
edge: { sourcename: "19" targetname: "20" label: "false" color: red }
// node 20
edge: { sourcename: "20" targetname: "21" label: "false" color: red }
edge: { sourcename: "20" targetname: "25" label: "true" color: darkgreen }
// node 21
edge: { sourcename: "21" targetname: "22" }
// node 22
edge: { sourcename: "22" targetname: "23" label: "false" color: red }
edge: { sourcename: "22" targetname: "24" label: "true" color: darkgreen }
// node 23
edge: { sourcename: "23" targetname: "24" label: "false" color: red }
edge: { sourcename: "23" targetname: "23" label: "true" color: darkgreen }
// node 24
edge: { sourcename: "24" targetname: "22" label: "true" color: darkgreen }
edge: { sourcename: "24" targetname: "25" label: "false" color: red }
// node 25
edge: { sourcename: "25" targetname: "14" }
// node 26
edge: { sourcename: "26" targetname: "9" }
// node 27
edge: { sourcename: "27" targetname: "9" }
// node 28
edge: { sourcename: "28" targetname: "9" }
// node 29
edge: { sourcename: "29" targetname: "9" }
// node 30
edge: { sourcename: "30" targetname: "9" }
// node 31
edge: { sourcename: "31" targetname: "9" }
// node 32
edge: { sourcename: "32" targetname: "9" }
// node 33
edge: { sourcename: "33" targetname: "9" }
// node 34
edge: { sourcename: "34" targetname: "9" }
// node 35
edge: { sourcename: "35" targetname: "9" }
// node 36
edge: { sourcename: "36" targetname: "9" }
// node 37
edge: { sourcename: "37" targetname: "9" }
// node 38
edge: { sourcename: "38" targetname: "39" label: "false" color: red }
edge: { sourcename: "38" targetname: "40" label: "true" color: darkgreen }
// node 39
edge: { sourcename: "39" targetname: "2" }
// node 40
edge: { sourcename: "40" targetname: "39" label: "true" color: darkgreen }
edge: { sourcename: "40" targetname: "41" label: "false" color: red }
// node 41
edge: { sourcename: "41" targetname: "2" label: "true" color: darkgreen }
edge: { sourcename: "41" targetname: "42" label: "false" color: red }
// node 42
edge: { sourcename: "42" targetname: "43" label: "false" color: red }
edge: { sourcename: "42" targetname: "44" label: "true" color: darkgreen }
// node 43
edge: { sourcename: "43" targetname: "2" }
// node 44
edge: { sourcename: "44" targetname: "43" label: "true" color: darkgreen }
edge: { sourcename: "44" targetname: "45" label: "false" color: red }
// node 45
edge: { sourcename: "45" targetname: "46" label: "false" color: red }
edge: { sourcename: "45" targetname: "48" label: "true" color: darkgreen }
// node 46
edge: { sourcename: "46" targetname: "2" label: "true" color: darkgreen }
edge: { sourcename: "46" targetname: "47" label: "false" color: red }
// node 47
edge: { sourcename: "47" targetname: "2" }
// node 48
edge: { sourcename: "48" targetname: "46" label: "true" color: darkgreen }
edge: { sourcename: "48" targetname: "49" label: "false" color: red }
// node 49
edge: { sourcename: "49" targetname: "46" label: "true" color: darkgreen }
edge: { sourcename: "49" targetname: "50" label: "false" color: red }
// node 50
edge: { sourcename: "50" targetname: "51" label: "false" color: red }
edge: { sourcename: "50" targetname: "67" label: "true" color: darkgreen }
// node 51
edge: { sourcename: "51" targetname: "52" label: "false" color: red }
edge: { sourcename: "51" targetname: "99" label: "true" color: darkgreen }
// node 52
edge: { sourcename: "52" targetname: "53" label: "false" color: red }
edge: { sourcename: "52" targetname: "99" label: "true" color: darkgreen }
// node 53
edge: { sourcename: "53" targetname: "54" }
// node 54
edge: { sourcename: "54" targetname: "55" label: "false" color: red }
edge: { sourcename: "54" targetname: "56" label: "true" color: darkgreen }
// node 55
edge: { sourcename: "55" targetname: "56" }
// node 56
edge: { sourcename: "56" targetname: "57" label: "false" color: red }
edge: { sourcename: "56" targetname: "76" label: "true" color: darkgreen }
// node 57
edge: { sourcename: "57" targetname: "58" label: "false" color: red }
edge: { sourcename: "57" targetname: "76" label: "true" color: darkgreen }
// node 58
edge: { sourcename: "58" targetname: "59" label: "false" color: red }
edge: { sourcename: "58" targetname: "76" label: "true" color: darkgreen }
// node 59
edge: { sourcename: "59" targetname: "60" }
// node 60
edge: { sourcename: "60" targetname: "61" label: "false" color: red }
edge: { sourcename: "60" targetname: "70" label: "true" color: darkgreen }
// node 61
edge: { sourcename: "61" targetname: "62" label: "false" color: red }
edge: { sourcename: "61" targetname: "81" label: "true" color: darkgreen }
// node 62
edge: { sourcename: "62" targetname: "63" label: "false" color: red }
edge: { sourcename: "62" targetname: "70" label: "true" color: darkgreen }
// node 63
edge: { sourcename: "63" targetname: "64" label: "false" color: red }
edge: { sourcename: "63" targetname: "96" label: "true" color: darkgreen }
// node 64
edge: { sourcename: "64" targetname: "65" label: "false" color: red }
edge: { sourcename: "64" targetname: "94" label: "true" color: darkgreen }
// node 65
edge: { sourcename: "65" targetname: "66" label: "false" color: red }
edge: { sourcename: "65" targetname: "68" label: "true" color: darkgreen }
// node 66
edge: { sourcename: "66" targetname: "67" }
// node 67
edge: { sourcename: "67" targetname: "46" }
// node 68
edge: { sourcename: "68" targetname: "69" label: "false" color: red }
edge: { sourcename: "68" targetname: "80" label: "true" color: darkgreen }
// node 69
edge: { sourcename: "69" targetname: "70" }
// node 70
edge: { sourcename: "70" targetname: "71" label: "false" color: red }
edge: { sourcename: "70" targetname: "73" label: "true" color: darkgreen }
// node 71
edge: { sourcename: "71" targetname: "72" label: "false" color: red }
edge: { sourcename: "71" targetname: "73" label: "true" color: darkgreen }
// node 72
edge: { sourcename: "72" targetname: "60" label: "true" color: darkgreen }
edge: { sourcename: "72" targetname: "73" label: "false" color: red }
// node 73
edge: { sourcename: "73" targetname: "74" label: "false" color: red }
edge: { sourcename: "73" targetname: "92" label: "true" color: darkgreen }
// node 74
edge: { sourcename: "74" targetname: "75" label: "false" color: red }
edge: { sourcename: "74" targetname: "79" label: "true" color: darkgreen }
// node 75
edge: { sourcename: "75" targetname: "76" }
// node 76
edge: { sourcename: "76" targetname: "77" label: "false" color: red }
edge: { sourcename: "76" targetname: "99" label: "true" color: darkgreen }
// node 77
edge: { sourcename: "77" targetname: "78" label: "false" color: red }
edge: { sourcename: "77" targetname: "99" label: "true" color: darkgreen }
// node 78
edge: { sourcename: "78" targetname: "54" }
// node 79
edge: { sourcename: "79" targetname: "75" label: "true" color: darkgreen }
edge: { sourcename: "79" targetname: "80" label: "false" color: red }
// node 80
edge: { sourcename: "80" targetname: "67" }
// node 81
edge: { sourcename: "81" targetname: "70" label: "true" color: darkgreen }
edge: { sourcename: "81" targetname: "82" label: "false" color: red }
// node 82
edge: { sourcename: "82" targetname: "83" label: "false" color: red }
edge: { sourcename: "82" targetname: "87" label: "true" color: darkgreen }
// node 83
edge: { sourcename: "83" targetname: "84" label: "false" color: red }
edge: { sourcename: "83" targetname: "87" label: "true" color: darkgreen }
// node 84
edge: { sourcename: "84" targetname: "85" }
// node 85
edge: { sourcename: "85" targetname: "86" label: "false" color: red }
edge: { sourcename: "85" targetname: "87" label: "true" color: darkgreen }
// node 86
edge: { sourcename: "86" targetname: "85" label: "true" color: darkgreen }
edge: { sourcename: "86" targetname: "87" label: "false" color: red }
// node 87
edge: { sourcename: "87" targetname: "88" label: "false" color: red }
edge: { sourcename: "87" targetname: "100" label: "true" color: darkgreen }
// node 88
edge: { sourcename: "88" targetname: "89" label: "false" color: red }
edge: { sourcename: "88" targetname: "102" label: "true" color: darkgreen }
// node 89
edge: { sourcename: "89" targetname: "70" label: "true" color: darkgreen }
edge: { sourcename: "89" targetname: "90" label: "false" color: red }
// node 90
edge: { sourcename: "90" targetname: "80" label: "true" color: darkgreen }
edge: { sourcename: "90" targetname: "91" label: "false" color: red }
// node 91
edge: { sourcename: "91" targetname: "70" }
// node 92
edge: { sourcename: "92" targetname: "74" label: "true" color: darkgreen }
edge: { sourcename: "92" targetname: "93" label: "false" color: red }
// node 93
edge: { sourcename: "93" targetname: "67" }
// node 94
edge: { sourcename: "94" targetname: "95" label: "false" color: red }
edge: { sourcename: "94" targetname: "98" label: "true" color: darkgreen }
// node 95
edge: { sourcename: "95" targetname: "70" }
// node 96
edge: { sourcename: "96" targetname: "93" label: "true" color: darkgreen }
edge: { sourcename: "96" targetname: "97" label: "false" color: red }
// node 97
edge: { sourcename: "97" targetname: "70" }
// node 98
edge: { sourcename: "98" targetname: "67" }
// node 99
edge: { sourcename: "99" targetname: "67" }
// node 100
edge: { sourcename: "100" targetname: "98" label: "true" color: darkgreen }
edge: { sourcename: "100" targetname: "101" label: "false" color: red }
// node 101
edge: { sourcename: "101" targetname: "70" }
// node 102
edge: { sourcename: "102" targetname: "93" label: "true" color: darkgreen }
edge: { sourcename: "102" targetname: "103" label: "false" color: red }
// node 103
edge: { sourcename: "103" targetname: "70" }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment