Created
September 29, 2017 20:06
-
-
Save exjam/7784b3a49b9789879e457aa0a442e9af to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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__readHostsFile31: | |
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