.text:00001820
.text:00001820 ; =============== S U B R O U T I N E =======================================
.text:00001820
.text:00001820
.text:00001820 sub_1820                                ; CODE XREF: sub_1B10+64Ep
.text:00001820
.text:00001820 s               = -0xE8
.text:00001820 fd              = -0xE4
.text:00001820 var_E0          = -0xE0
.text:00001820 var_DC          = -0xDC
.text:00001820 var_D4          = -0xD4
.text:00001820 var_3C          = -0x3C
.text:00001820 var_3B          = -0x3B
.text:00001820 var_3A          = -0x3A
.text:00001820 var_39          = -0x39
.text:00001820 var_38          = -0x38
.text:00001820 var_37          = -0x37
.text:00001820 var_36          = -0x36
.text:00001820 var_35          = -0x35
.text:00001820 var_34          = -0x34
.text:00001820 var_33          = -0x33
.text:00001820 var_32          = -0x32
.text:00001820 var_31          = -0x31
.text:00001820 var_30          = -0x30
.text:00001820 var_2F          = -0x2F
.text:00001820 var_2E          = -0x2E
.text:00001820 var_2D          = -0x2D
.text:00001820 var_2C          = -0x2C
.text:00001820
.text:00001820                 LDR             R3, =(__stack_chk_guard_ptr - 0x182A)
.text:00001822                 PUSH.W          {R4-R11,LR}
.text:00001826                 ADD             R3, PC ; __stack_chk_guard_ptr
.text:00001828                 LDR             R3, [R3] ; __stack_chk_guard
.text:0000182A                 SUB             SP, SP, #0xC4
.text:0000182C                 MOV             R11, R1
.text:0000182E                 MOVS            R1, #0x20 ; c
.text:00001830                 STR             R2, [SP,#0xE8+fd]
.text:00001832                 LDR             R2, [R3]
.text:00001834                 STR             R3, [SP,#0xE8+var_E0]
.text:00001836                 STR             R2, [SP,#0xE8+var_2C]
.text:00001838                 BLX             strchr
.text:0000183C                 LDR             R2, =(dword_6B00 - 0x1842)
.text:0000183E                 ADD             R2, PC ; dword_6B00
.text:00001840                 LDRB.W          R1, [R2,#(dword_6C90 - 0x6B00)]
.text:00001844                 MOV             R8, R0
.text:00001846                 ADDS            R4, R0, #1
.text:00001848                 CMP             R1, #0
.text:0000184A                 BEQ.W           loc_1A6A
.text:0000184E
.text:0000184E loc_184E                                ; CODE XREF: sub_1820+27Ej
.text:0000184E                 LDR             R6, =(dword_6B00 - 0x1858)
.text:00001850                 MOVW            R7, #0x539
.text:00001854                 ADD             R6, PC ; dword_6B00
.text:00001856                 ADD.W           R0, R6, #0x190 ; s
.text:0000185A                 BLX             strlen
.text:0000185E                 CMP             R11, R7
.text:00001860                 MOV             R10, R0
.text:00001862                 BEQ             loc_18A8
.text:00001864
.text:00001864 loc_1864                                ; CODE XREF: sub_1820+A4j
.text:00001864                                         ; sub_1820+284j
.text:00001864                 LDR             R7, =(dword_6B00 - 0x186A)
.text:00001866                 ADD             R7, PC ; dword_6B00
.text:00001868                 SUBS            R5, R7, #4
.text:0000186A                 ADD.W           R7, R7, #0x18C
.text:0000186E                 B               loc_1874
.text:00001870 ; ---------------------------------------------------------------------------
.text:00001870
.text:00001870 loc_1870                                ; CODE XREF: sub_1820+5Aj
.text:00001870                                         ; sub_1820+60j
.text:00001870                 CMP             R5, R7
.text:00001872                 BEQ             loc_1896
.text:00001874
.text:00001874 loc_1874                                ; CODE XREF: sub_1820+4Ej
.text:00001874                                         ; sub_1820+74j
.text:00001874                 LDR.W           R6, [R5,#(dword_6B00 - 0x6AFC)]!
.text:00001878                 CMP             R6, #0
.text:0000187A                 BEQ             loc_1870
.text:0000187C                 LDR             R3, [R6,#0x14]
.text:0000187E                 CMP             R3, R11
.text:00001880                 BNE             loc_1870
.text:00001882                 MOV             R0, R4  ; s
.text:00001884                 BLX             strlen
.text:00001888                 MOV             R1, R4  ; buf
.text:0000188A                 MOV             R2, R0  ; n
.text:0000188C                 LDR             R0, [R6,#0x10] ; fd
.text:0000188E                 BLX             write
.text:00001892                 CMP             R5, R7
.text:00001894                 BNE             loc_1874
.text:00001896
.text:00001896 loc_1896                                ; CODE XREF: sub_1820+52j
.text:00001896                 LDR             R3, [SP,#0xE8+var_E0]
.text:00001898                 LDR             R2, [SP,#0xE8+var_2C]
.text:0000189A                 LDR             R3, [R3]
.text:0000189C                 CMP             R2, R3
.text:0000189E                 BNE.W           loc_1ADE
.text:000018A2                 ADD             SP, SP, #0xC4
.text:000018A4                 POP.W           {R4-R11,PC}
.text:000018A8 ; ---------------------------------------------------------------------------
.text:000018A8
.text:000018A8 loc_18A8                                ; CODE XREF: sub_1820+42j
.text:000018A8                 LDRB.W          R2, [R6,#(dword_6CA0 - 0x6B00)]
.text:000018AC                 CMP             R2, #0
.text:000018AE                 BEQ.W           loc_1AA6
.text:000018B2
.text:000018B2 loc_18B2                                ; CODE XREF: sub_1820+2BCj
.text:000018B2                 LDR             R1, =(dword_6B00 - 0x18BC)
.text:000018B4                 MOV             R0, R4  ; s1
.text:000018B6                 MOV             R2, R10 ; n
.text:000018B8                 ADD             R1, PC ; dword_6B00
.text:000018BA                 ADD.W           R1, R1, #0x1A0 ; s2
.text:000018BE                 BLX             strncmp
.text:000018C2                 CMP             R0, #0
.text:000018C4                 BNE             loc_1864
.text:000018C6                 LDR.W           R12, =(aNlGMfgl - 0x18D8)
.text:000018CA                 ADD.W           R2, R10, #2
.text:000018CE                 LDR             R3, =(dword_6B00 - 0x18DE)
.text:000018D0                 MOV             R5, R0
.text:000018D2                 LDR             R7, =(dword_6B00 - 0x18F0)
.text:000018D4                 ADD             R12, PC ; "NL]]@G\t@]\tMFGL"
.text:000018D6                 LDR.W           R9, =(aNlGMfgl - 0x18F2)
.text:000018DA                 ADD             R3, PC ; dword_6B00
.text:000018DC                 ADD.W           R3, R3, #0x1B0
.text:000018E0                 STR.W           R11, [SP,#0xE8+var_DC]
.text:000018E4                 ADD.W           R10, R12, #0x20
.text:000018E8                 ADD             R6, SP, #0xE8+var_D4
.text:000018EA                 STR             R3, [SP,#0xE8+s]
.text:000018EC                 ADD             R7, PC ; dword_6B00
.text:000018EE                 ADD             R9, PC  ; "NL]]@G\t@]\tMFGL"
.text:000018F0                 MOV             R11, R2
.text:000018F2                 B               loc_190A
.text:000018F4 ; ---------------------------------------------------------------------------
.text:000018F4
.text:000018F4 loc_18F4                                ; CODE XREF: sub_1820+1D8j
.text:000018F4                                         ; sub_1820+248j
.text:000018F4                 LDR             R0, [SP,#0xE8+s] ; s
.text:000018F6                 BLX             strlen
.text:000018FA                 LDR             R1, [SP,#0xE8+s] ; buf
.text:000018FC                 MOV             R2, R0  ; n
.text:000018FE                 LDR             R0, [SP,#0xE8+fd] ; fd
.text:00001900                 BLX             write
.text:00001904
.text:00001904 loc_1904                                ; CODE XREF: sub_1820+11Cj
.text:00001904                                         ; sub_1820+128j ...
.text:00001904                 ADDS            R5, #1
.text:00001906                 ADD.W           R10, R10, #0x40
.text:0000190A
.text:0000190A loc_190A                                ; CODE XREF: sub_1820+D2j
.text:0000190A                 MOV             R0, R4  ; s
.text:0000190C                 BLX             strlen
.text:00001910                 CMP             R5, R0
.text:00001912                 BCS.W           loc_1AA0
.text:00001916                 MOV             R0, R6
.text:00001918                 BL              sub_15A0
.text:0000191C                 ADD.W           R1, R5, R11
.text:00001920                 MOVS            R2, #1
.text:00001922                 ADD             R1, R8
.text:00001924                 MOV             R0, R6
.text:00001926                 BL              sub_15D8
.text:0000192A                 MOV             R1, R6
.text:0000192C                 ADD             R0, SP, #0xE8+var_3C
.text:0000192E                 BL              sub_1668
.text:00001932                 LDRB.W          R2, [SP,#0xE8+var_3C]
.text:00001936                 LDR.W           R1, [R10]
.text:0000193A                 CMP             R1, R2
.text:0000193C                 BNE             loc_1904
.text:0000193E                 LDRB.W          R2, [SP,#0xE8+var_3B]
.text:00001942                 LDR.W           R1, [R10,#(dword_6024 - 0x6020)]
.text:00001946                 CMP             R1, R2
.text:00001948                 BNE             loc_1904
.text:0000194A                 LDRB.W          R2, [SP,#0xE8+var_3A]
.text:0000194E                 LDR.W           R1, [R10,#(dword_6028 - 0x6020)]
.text:00001952                 CMP             R1, R2
.text:00001954                 BNE             loc_1904
.text:00001956                 LDRB.W          R2, [SP,#0xE8+var_39]
.text:0000195A                 LDR.W           R1, [R10,#(dword_602C - 0x6020)]
.text:0000195E                 CMP             R1, R2
.text:00001960                 BNE             loc_1904
.text:00001962                 LDRB.W          R2, [SP,#0xE8+var_38]
.text:00001966                 LDR.W           R1, [R10,#(dword_6030 - 0x6020)]
.text:0000196A                 CMP             R1, R2
.text:0000196C                 BNE             loc_1904
.text:0000196E                 LDRB.W          R2, [SP,#0xE8+var_37]
.text:00001972                 LDR.W           R1, [R10,#(dword_6034 - 0x6020)]
.text:00001976                 CMP             R1, R2
.text:00001978                 BNE             loc_1904
.text:0000197A                 LDRB.W          R2, [SP,#0xE8+var_36]
.text:0000197E                 LDR.W           R1, [R10,#(dword_6038 - 0x6020)]
.text:00001982                 CMP             R1, R2
.text:00001984                 BNE             loc_1904
.text:00001986                 LDRB.W          R2, [SP,#0xE8+var_35]
.text:0000198A                 LDR.W           R1, [R10,#(dword_603C - 0x6020)]
.text:0000198E                 CMP             R1, R2
.text:00001990                 BNE             loc_1904
.text:00001992                 LDRB.W          R2, [SP,#0xE8+var_34]
.text:00001996                 LDR.W           R1, [R10,#(dword_6040 - 0x6020)]
.text:0000199A                 CMP             R1, R2
.text:0000199C                 BNE             loc_1904
.text:0000199E                 LDRB.W          R2, [SP,#0xE8+var_33]
.text:000019A2                 LDR.W           R1, [R10,#(dword_6044 - 0x6020)]
.text:000019A6                 CMP             R1, R2
.text:000019A8                 BNE             loc_1904
.text:000019AA                 LDRB.W          R2, [SP,#0xE8+var_32]
.text:000019AE                 LDR.W           R1, [R10,#(dword_6048 - 0x6020)]
.text:000019B2                 CMP             R1, R2
.text:000019B4                 BNE             loc_1904
.text:000019B6                 LDRB.W          R2, [SP,#0xE8+var_31]
.text:000019BA                 LDR.W           R1, [R10,#(dword_604C - 0x6020)]
.text:000019BE                 CMP             R1, R2
.text:000019C0                 BNE             loc_1904
.text:000019C2                 LDRB.W          R2, [SP,#0xE8+var_30]
.text:000019C6                 LDR.W           R1, [R10,#(dword_6050 - 0x6020)]
.text:000019CA                 CMP             R1, R2
.text:000019CC                 BNE             loc_1904
.text:000019CE                 LDRB.W          R2, [SP,#0xE8+var_2F]
.text:000019D2                 LDR.W           R1, [R10,#(dword_6054 - 0x6020)]
.text:000019D6                 CMP             R1, R2
.text:000019D8                 BNE             loc_1904
.text:000019DA                 LDRB.W          R2, [SP,#0xE8+var_2E]
.text:000019DE                 LDR.W           R1, [R10,#(dword_6058 - 0x6020)]
.text:000019E2                 CMP             R1, R2
.text:000019E4                 BNE             loc_1904
.text:000019E6                 LDRB.W          R2, [SP,#0xE8+var_2D]
.text:000019EA                 LDR.W           R1, [R10,#(dword_605C - 0x6020)]
.text:000019EE                 CMP             R1, R2
.text:000019F0                 BNE             loc_1904
.text:000019F2                 LDRB.W          R2, [R7,#0x1B0]
.text:000019F6                 CMP             R2, #0
.text:000019F8                 BNE.W           loc_18F4
.text:000019FC                 LDRB.W          R1, [R9,#0x8E1]
.text:00001A00                 LDRB.W          R2, [R9,#0x8E2]
.text:00001A04                 EOR.W           R1, R1, #0x26
.text:00001A08                 STRB.W          R1, [R7,#0x1B1]
.text:00001A0C                 EOR.W           R2, R2, #0x26
.text:00001A10                 LDRB.W          R1, [R9,#0x8E3]
.text:00001A14                 STRB.W          R2, [R7,#0x1B2]
.text:00001A18                 LDRB.W          R2, [R9,#0x8E4]
.text:00001A1C                 EOR.W           R1, R1, #0x26
.text:00001A20                 STRB.W          R1, [R7,#0x1B3]
.text:00001A24                 EOR.W           R2, R2, #0x26
.text:00001A28                 LDRB.W          R1, [R9,#0x8E5]
.text:00001A2C                 STRB.W          R2, [R7,#0x1B4]
.text:00001A30                 LDRB.W          R2, [R9,#0x8E6]
.text:00001A34                 EOR.W           R1, R1, #0x26
.text:00001A38                 LDRB.W          R0, [R9,#0x8E0]
.text:00001A3C                 EOR.W           R2, R2, #0x26
.text:00001A40                 STRB.W          R1, [R7,#0x1B5]
.text:00001A44                 STRB.W          R2, [R7,#0x1B6]
.text:00001A48                 EOR.W           R0, R0, #0x26
.text:00001A4C                 LDRB.W          R1, [R9,#0x8E7]
.text:00001A50                 LDRB.W          R2, [R9,#0x8E8]
.text:00001A54                 EOR.W           R1, R1, #0x26
.text:00001A58                 STRB.W          R0, [R7,#0x1B0]
.text:00001A5C                 EOR.W           R2, R2, #0x26
.text:00001A60                 STRB.W          R1, [R7,#0x1B7]
.text:00001A64                 STRB.W          R2, [R7,#0x1B8]
.text:00001A68                 B               loc_18F4
.text:00001A6A ; ---------------------------------------------------------------------------
.text:00001A6A
.text:00001A6A loc_1A6A                                ; CODE XREF: sub_1820+2Aj
.text:00001A6A                 LDR             R5, =(aNlGMfgl - 0x1A70)
.text:00001A6C                 ADD             R5, PC  ; "NL]]@G\t@]\tMFGL"
.text:00001A6E                 LDMIA.W         R5, {R0,R1,R6} ; "NL]]@G\t@]\tMFGL"
.text:00001A72                 EOR.W           R7, R0, #0x29292929
.text:00001A76                 LDRB            R0, [R5,#(aNlGMfgl+0xC - 0x6000)] ; "GL"
.text:00001A78                 LDRB            R5, [R5,#(aNlGMfgl+0xD - 0x6000)] ; "L"
.text:00001A7A                 EOR.W           R1, R1, #0x29292929
.text:00001A7E                 EOR.W           R6, R6, #0x29292929
.text:00001A82                 EOR.W           R0, R0, #0x29
.text:00001A86                 STR.W           R1, [R2,#(dword_6C94 - 0x6B00)]
.text:00001A8A                 EOR.W           R1, R5, #0x29
.text:00001A8E                 STR.W           R7, [R2,#(dword_6C90 - 0x6B00)]
.text:00001A92                 STR.W           R6, [R2,#(dword_6C98 - 0x6B00)]
.text:00001A96                 STRB.W          R0, [R2,#(byte_6C9C - 0x6B00)]
.text:00001A9A                 STRB.W          R1, [R2,#(byte_6C9D - 0x6B00)]
.text:00001A9E                 B               loc_184E
.text:00001AA0 ; ---------------------------------------------------------------------------
.text:00001AA0
.text:00001AA0 loc_1AA0                                ; CODE XREF: sub_1820+F2j
.text:00001AA0                 LDR.W           R11, [SP,#0xE8+var_DC]
.text:00001AA4                 B               loc_1864
.text:00001AA6 ; ---------------------------------------------------------------------------
.text:00001AA6
.text:00001AA6 loc_1AA6                                ; CODE XREF: sub_1820+8Ej
.text:00001AA6                 LDR             R0, =(aNlGMfgl - 0x1AAC)
.text:00001AA8                 ADD             R0, PC  ; "NL]]@G\t@]\tMFGL"
.text:00001AAA                 ADD.W           R1, R0, #0x10
.text:00001AAE                 LDMIA           R1, {R1,R2,R5}
.text:00001AB0                 EOR.W           R7, R1, #0x2E2E2E2E
.text:00001AB4                 LDRB            R1, [R0,#(byte_601C - 0x6000)]
.text:00001AB6                 LDRB            R0, [R0,#(byte_601D - 0x6000)]
.text:00001AB8                 EOR.W           R2, R2, #0x2E2E2E2E
.text:00001ABC                 EOR.W           R5, R5, #0x2E2E2E2E
.text:00001AC0                 EOR.W           R1, R1, #0x2E
.text:00001AC4                 STR.W           R2, [R6,#(dword_6CA4 - 0x6B00)]
.text:00001AC8                 EOR.W           R2, R0, #0x2E
.text:00001ACC                 STR.W           R7, [R6,#(dword_6CA0 - 0x6B00)]
.text:00001AD0                 STR.W           R5, [R6,#(dword_6CA8 - 0x6B00)]
.text:00001AD4                 STRB.W          R1, [R6,#(byte_6CAC - 0x6B00)]
.text:00001AD8                 STRB.W          R2, [R6,#(byte_6CAD - 0x6B00)]
.text:00001ADC                 B               loc_18B2
.text:00001ADE ; ---------------------------------------------------------------------------
.text:00001ADE
.text:00001ADE loc_1ADE                                ; CODE XREF: sub_1820+7Ej
.text:00001ADE                 BLX             __stack_chk_fail
.text:00001ADE ; End of function sub_1820
.text:00001ADE
.text:00001ADE ; ---------------------------------------------------------------------------