Function at 0x40b5a0
Capabilities:
Read .ini file

Disassembly:
sub esp, 0x818
mov eax, dword [0x437348]
push ebx
push ebp
push esi
mov ebp, ecx
push edi
mov dword [esp + 0x14], eax
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x85]
mov byte [esp + 0x84], 0
lea esi, [ebp + 0x50]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
mov ebx, dword [esp + 0x834]
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], ebx
jne 0x40b628
lea ecx, [esp + 0x84]
push 0x104
push ecx
call fcn.004114e0
add esp, 8
lea edx, [esp + 0x84]
push 0x43c09c
push edx
push str._s_s.inf
push esi
call fcn.00429590
add esp, 0x10
mov ecx, 0x103
xor eax, eax
lea edi, [esp + 0x419]
mov byte [esp + 0x418], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push esi
lea eax, [esp + 0x41c]
push 0x410
push eax
push 0x43babc
push str.TailSetup
push str.INSTALL
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
lea ecx, [esp + 0x418]
test ebx, ebx
mov dword [esp + 0x20], ecx
jne 0x40b8d7
mov ecx, 0x43be60
call fcn.00408340
lea ecx, [eax + 4]
xor ebx, ebx
mov dword [eax + 0x14], ecx
mov eax, dword [ebp + 0x10]
cmp eax, ebx
mov dword [esp + 0x18], ecx
je 0x40b6b0
mov eax, dword [ebp + 0xc]
lea ecx, [ebp + 8]
push eax
mov edx, dword [eax]
push edx
lea edx, [esp + 0x24]
push edx
call fcn.004108d0
cmp dword [ebp + 0x1c], ebx
je 0x40b6c9
mov eax, dword [ebp + 0x18]
lea ecx, [ebp + 0x14]
push eax
mov edx, dword [eax]
lea eax, [esp + 0x20]
push edx
push eax
call fcn.004108d0
cmp dword [ebp + 0x28], ebx
je 0x40b6e2
mov eax, dword [ebp + 0x24]
lea ecx, [ebp + 0x20]
push eax
mov edx, dword [eax]
push edx
lea edx, [esp + 0x24]
push edx
call fcn.004108d0
lea esi, [ebp + 0x3c]
mov dword [ebp + 0x24c], ebx
mov eax, dword [esi]
cmp dword [eax - 8], ebx
je 0x40b734
mov edx, dword [eax - 0xc]
lea ecx, [eax - 0xc]
cmp edx, ebx
jl 0x40b728
mov edx, dword [0x43734c]
add eax, 0xfffffff4
cmp eax, edx
je 0x40b734
push ecx
call edi
test eax, eax
jg 0x40b71e
mov eax, dword [esi]
sub eax, 0xc
push eax
call fcn.004292c0
add esp, 4
mov ecx, dword [0x437348]
mov dword [esi], ecx
jmp 0x40b734
push 0x43babc
mov ecx, esi
call fcn.00410720
mov eax, dword [ebp + 0x40]
lea esi, [ebp + 0x40]
cmp dword [eax - 8], ebx
je 0x40b780
mov edx, dword [eax - 0xc]
lea ecx, [eax - 0xc]
cmp edx, ebx
jl 0x40b774
mov edx, dword [0x43734c]
add eax, 0xfffffff4
cmp eax, edx
je 0x40b780
push ecx
call edi
test eax, eax
jg 0x40b76b
mov edx, dword [esi]
sub edx, 0xc
push edx
call fcn.004292c0
add esp, 4
mov eax, dword [0x437348]
mov dword [esi], eax
jmp 0x40b780
push 0x43babc
mov ecx, esi
call fcn.00410720
mov eax, dword [ebp + 0x48]
lea ecx, [ebp + 0x44]
push eax
mov edx, dword [eax]
push edx
lea edx, [esp + 0x24]
push edx
call fcn.004108d0
cmp dword [esp + 0x82c], 5
jne 0x40b8c9
push 0x43c09c
lea ecx, [esp + 0x18c]
call fcn.004016e0
mov al, byte [0x43d84c]
lea ecx, [esp + 0x188]
test al, 8
je 0x40b81f
call fcn.004017a0
mov esi, eax
lea edi, [ebp + 0x158]
cmp esi, ebx
je 0x40b7dd
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebx, eax
push ebx
mov ecx, edi
call fcn.00402440
test eax, eax
je 0x40b80e
mov edi, dword [edi]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 0x158]
mov dword [ecx - 8], ebx
mov edx, dword [ebp + 0x158]
mov byte [ebx + edx], 0
lea ecx, [esp + 0x188]
call fcn.00401910
jmp 0x40b8bb
call fcn.004018f0
mov ecx, ebp
call fcn.00410530
push 0x43ca32
push 0x43c41a
lea eax, [esp + 0x8c]
push str._s_s
push eax
call fcn.00429590
add esp, 0x10
lea ecx, [esp + 0x84]
push 0xffffffffffffffff
push str._CT__S
push ecx
mov ecx, 0x43bc08
call fcn.0040e9a0
lea ecx, [esp + 0x188]
call fcn.004017a0
mov esi, eax
cmp esi, ebx
jne 0x40b879
xor ebx, ebx
jmp 0x40b882
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebx, eax
push ebx
lea ecx, [ebp + 0x158]
call fcn.00402440
test eax, eax
je 0x40b8bb
mov edi, dword [ebp + 0x158]
mov ecx, ebx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0x158]
mov dword [eax - 8], ebx
mov ecx, dword [ebp + 0x158]
mov byte [ebx + ecx], 0
lea ecx, [esp + 0x188]
call fcn.00401790
xor ebx, ebx
mov dword [ebp + 0x238], ebx
mov dword [ebp + 0x23c], ebx
jmp 0x40b8dd
inc dword [ebp + 0x24c]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x82c]
dec eax
mov ebx, dword [edx + 8]
cmp eax, 6
mov dword [esp + 0x28], ebx
ja case.default.0x40b8f9
jmp dword [eax*4 + 0x40c638]
test ebx, ebx
je case.default.0x40b8f9
mov esi, dword [esp + 0x830]
mov eax, dword [ebx + 0xc]
or ecx, 0xffffffff
mov dword [esp + 0x10], eax
lea edi, [eax + 0xe8]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x40b93e
mov eax, dword [ebp + 0xc]
lea ecx, [ebp + 8]
lea edx, [esp + 0x10]
push edx
push eax
lea eax, [esp + 0x24]
push eax
call fcn.00410870
mov eax, dword [ebx + 8]
test eax, eax
je 0x40b956
mov ecx, dword [esp + 0x82c]
push ebx
push esi
push ecx
mov ecx, ebp
call fcn.0040b5a0
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x40b90f
jmp case.default.0x40b8f9
test ebx, ebx
je case.default.0x40b8f9
mov esi, dword [esp + 0x830]
mov eax, dword [ebx + 8]
test eax, eax
je 0x40b989
mov edx, dword [esp + 0x82c]
push ebx
push esi
push edx
mov ecx, ebp
call fcn.0040b5a0
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x10], eax
mov ecx, dword [eax + 4]
lea edi, [eax + 0xc8]
test ecx, ecx
je 0x40b9b9
push edi
mov ecx, 0x43be60
call fcn.00406270
test eax, eax
jne 0x40b9b9
push 1
push edi
mov ecx, 0x43d1f0
call fcn.004052f0
push edi
mov ecx, 0x43d1f0
call fcn.004052c0
test eax, eax
je 0x40b9de
mov eax, dword [ebp + 0xc]
lea ecx, [ebp + 8]
lea edx, [esp + 0x10]
push edx
push eax
lea eax, [esp + 0x24]
push eax
call fcn.00410870
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x40b971
jmp case.default.0x40b8f9
test ebx, ebx
je case.default.0x40b8f9
mov eax, dword [ebx + 0xc]
mov ecx, 0xd
mov dword [esp + 0x10], eax
lea edi, [esp + 0x4d]
lea esi, [eax + 0xc8]
xor eax, eax
mov byte [esp + 0x4c], 0
push esi
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x50]
push 0x437af0
push ecx
stosb byte es:[edi], al
call fcn.00429590
mov al, byte [0x43d84c]
add esp, 0xc
test al, 0x10
je 0x40ba3f
push esi
mov ecx, 0x43d1f0
call fcn.004052c0
test eax, eax
jne 0x40ba88
mov eax, dword [ebp + 0x158]
mov ecx, dword [eax - 8]
test ecx, ecx
jl 0x40bca2
lea edx, [esp + 0x4c]
push edx
push eax
call fcn.0042a63f
add esp, 8
test eax, eax
je 0x40bca2
sub eax, dword [ebp + 0x158]
mov dword [esp + 0x1c], eax
js 0x40bca2
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x414]
test ecx, ecx
je 0x40bca2
lea ecx, [esp + 0x4c]
test ecx, ecx
je 0x40bc88
lea edx, [esp + 0x4c]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebx, eax
test ebx, ebx
je 0x40bc88
mov eax, 0x437aec
test eax, eax
jne 0x40bab8
mov dword [esp + 0x20], eax
jmp 0x40bac7
push 0x437aec
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [esp + 0x20], eax
mov esi, dword [ebp + 0x158]
xor edi, edi
mov eax, dword [esi - 8]
add eax, esi
cmp esi, eax
mov dword [esp + 0x18], eax
jae 0x40bc88
lea ecx, [esp + 0x4c]
push ecx
push esi
call fcn.0042a63f
add esp, 8
test eax, eax
je 0x40bb08
lea edx, [esp + 0x4c]
lea esi, [eax + ebx]
push edx
push esi
inc edi
call fcn.0042a63f
add esp, 8
test eax, eax
jne 0x40baf2
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea esi, [esi + eax + 1]
mov eax, dword [esp + 0x18]
cmp esi, eax
jb 0x40bae0
test edi, edi
jle 0x40bc88
mov eax, dword [esp + 0x24]
lea esi, [eax + 0x158]
mov ecx, esi
call fcn.00409b40
mov ebp, dword [esp + 0x20]
mov esi, dword [esi]
sub ebp, ebx
imul ebp, edi
mov eax, dword [esi - 8]
mov dword [esp + 0x2c], eax
add ebp, eax
mov eax, dword [esi - 4]
mov dword [esp + 0x1c], ebp
cmp eax, ebp
jl 0x40bb59
cmp dword [esi - 0xc], 1
jle 0x40bbb7
mov edx, dword [esp + 0x24]
lea ecx, [esi - 0xc]
mov dword [esp + 0x18], ecx
push ebp
lea ecx, [edx + 0x158]
call fcn.004023a0
test eax, eax
je 0x40bc84
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
add edx, 0x158
mov ecx, dword [eax + 4]
mov edi, dword [edx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp eax, dword [0x43734c]
je 0x40bbb7
mov esi, eax
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x40bbb7
push esi
call fcn.004292c0
add esp, 4
mov eax, dword [esp + 0x24]
add eax, 0x158
mov esi, dword [eax]
mov eax, dword [esi - 8]
add eax, esi
cmp esi, eax
mov dword [esp + 0x18], eax
jae 0x40bc71
lea ecx, [esp + 0x4c]
push ecx
push esi
call fcn.0042a63f
mov edi, eax
add esp, 8
test edi, edi
je 0x40bc5a
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
lea ecx, [edi + ebx]
mov ebp, dword [edx + 0x158]
lea eax, [edx + 0x158]
mov edx, dword [esp + 0x2c]
sub ebp, edi
sub ebp, ebx
lea eax, [edi + esi]
add ebp, edx
mov dword [esp + 0x48], eax
push ebp
push ecx
push eax
call fcn.0042a050
mov ecx, esi
mov esi, 0x437aec
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov eax, edx
and ecx, 3
sub eax, ebx
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x54]
lea ecx, [esp + 0x58]
push ecx
push esi
mov byte [esi + ebp], 0
mov ebp, dword [esp + 0x40]
add ebp, eax
mov dword [esp + 0x40], ebp
call fcn.0042a63f
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x40bbe7
mov ebp, dword [esp + 0x1c]
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea esi, [esi + eax + 1]
mov eax, dword [esp + 0x18]
cmp esi, eax
jb 0x40bbd3
mov edx, dword [esp + 0x24]
lea eax, [edx + 0x158]
mov eax, dword [edx + 0x158]
mov dword [eax - 8], ebp
mov ebp, dword [esp + 0x24]
mov eax, dword [ebp + 0x18]
lea ecx, [ebp + 0x14]
lea edx, [esp + 0x10]
push edx
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.00410870
mov ebx, dword [esp + 0x28]
mov eax, dword [ebp + 0x30]
lea ecx, [ebp + 0x2c]
lea edx, [esp + 0x10]
push edx
push eax
lea eax, [esp + 0x38]
push eax
call fcn.00410870
mov eax, dword [ebx + 8]
test eax, eax
je 0x40bcd7
mov ecx, dword [esp + 0x830]
mov edx, dword [esp + 0x82c]
push ebx
push ecx
push edx
mov ecx, ebp
call fcn.0040b5a0
mov ebx, dword [ebx + 4]
test ebx, ebx
mov dword [esp + 0x28], ebx
jne 0x40b9f2
jmp case.default.0x40b8f9
test ebx, ebx
je case.default.0x40b8f9
mov eax, dword [ebx + 0xc]
mov ecx, 0x43d1f0
mov dword [esp + 0x10], eax
add eax, 0xc8
push eax
call fcn.004052c0
test eax, eax
je 0x40be73
mov eax, dword [ebp + 0x24]
lea ecx, [ebp + 0x20]
lea edx, [esp + 0x10]
push edx
push eax
lea eax, [esp + 0x38]
push eax
call fcn.00410870
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 8]
test eax, eax
je 0x40be73
mov eax, dword [ebp + 0x24c]
xor edi, edi
test eax, eax
jbe 0x40bd76
lea esi, [ebp + 0x40]
mov edx, 0x437ae8
test edx, edx
jne 0x40bd53
xor eax, eax
jmp 0x40bd5e
push 0x437ae8
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x437ae8
push eax
mov ecx, esi
call fcn.00404520
mov eax, dword [ebp + 0x24c]
inc edi
cmp edi, eax
jb 0x40bd46
mov eax, dword [esp + 0x10]
push 0
lea edx, [esp + 0x44]
mov ecx, dword [eax]
push ecx
push edx
call fcn.004249d0
mov esi, eax
mov eax, dword [esp + 0x20]
add esp, 0xc
mov edi, dword [esi]
cmp eax, edi
je 0x40be0c
mov ecx, dword [eax - 0xc]
test ecx, ecx
jge 0x40bdac
mov ecx, dword [0x43734c]
add eax, 0xfffffff4
cmp eax, ecx
jne 0x40bdb3
mov eax, dword [edi - 0xc]
test eax, eax
jge 0x40bdf3
mov eax, dword [edi - 8]
lea ecx, [esp + 0x14]
push eax
mov dword [esp + 0x20], eax
call fcn.00402440
test eax, eax
je 0x40be0c
mov eax, dword [esp + 0x1c]
mov esi, edi
mov edi, dword [esp + 0x14]
mov ecx, eax
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x14]
mov dword [ecx - 8], eax
mov edx, dword [esp + 0x14]
mov byte [eax + edx], 0
jmp 0x40be0c
lea ecx, [esp + 0x14]
call fcn.00402400
mov esi, dword [esi]
mov dword [esp + 0x14], esi
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x40]
mov edx, dword [0x43734c]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x40be3b
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x40be3b
mov edx, dword [esp + 0x40]
add edx, 0xfffffff4
push edx
call fcn.004292c0
add esp, 4
mov eax, dword [esp + 0x14]
lea esi, [ebp + 0x40]
push eax
mov ecx, esi
mov eax, dword [eax - 8]
push eax
call fcn.00404520
mov ecx, 0x437ae4
test ecx, ecx
jne 0x40be5b
xor eax, eax
jmp 0x40be66
push 0x437ae4
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x437ae4
push eax
mov ecx, esi
call fcn.00404520
mov eax, dword [ebp + 0x30]
lea ecx, [ebp + 0x2c]
lea edx, [esp + 0x10]
push edx
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.00410870
mov eax, dword [ebx + 8]
test eax, eax
je 0x40bea8
mov ecx, dword [esp + 0x830]
mov edx, dword [esp + 0x82c]
push ebx
push ecx
push edx
mov ecx, ebp
call fcn.0040b5a0
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x40bcf3
jmp case.default.0x40b8f9
test ebx, ebx
je case.default.0x40b8f9
mov eax, dword [ebx + 8]
test eax, eax
je 0x40bedf
mov eax, dword [esp + 0x830]
mov ecx, dword [esp + 0x82c]
push ebx
push eax
push ecx
mov ecx, ebp
call fcn.0040b5a0
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x10], eax
mov edx, dword [eax + 4]
lea ecx, [eax + 0xc8]
test edx, edx
jne 0x40bf0a
push ecx
mov ecx, 0x43d1f0
call fcn.004052c0
test eax, eax
je 0x40c02a
mov eax, dword [esp + 0x10]
push eax
mov ecx, ebp
call fcn.0040e8d0
mov eax, dword [ebp + 0xc]
lea ecx, [ebp + 8]
lea edx, [esp + 0x10]
push edx
push eax
lea eax, [esp + 0x38]
push eax
call fcn.00410870
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x40c02a
mov ecx, dword [eax]
push 0
lea edx, [esp + 0x48]
push ecx
push edx
call fcn.004249d0
mov edi, eax
mov eax, dword [esp + 0x20]
add esp, 0xc
mov esi, dword [edi]
cmp eax, esi
je 0x40bfbf
mov ecx, dword [eax - 0xc]
test ecx, ecx
jge 0x40bf69
mov ecx, dword [0x43734c]
add eax, 0xfffffff4
cmp eax, ecx
jne 0x40bf70
mov eax, dword [esi - 0xc]
test eax, eax
jge 0x40bfa6
mov ebx, dword [esi - 8]
lea ecx, [esp + 0x14]
push ebx
call fcn.00402440
test eax, eax
je 0x40bfbf
mov edi, dword [esp + 0x14]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x14]
mov dword [ecx - 8], ebx
mov edx, dword [esp + 0x14]
mov byte [ebx + edx], 0
jmp 0x40bfbf
lea ecx, [esp + 0x14]
call fcn.00402400
mov edi, dword [edi]
mov dword [esp + 0x14], edi
add edi, 0xfffffff4
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x44]
mov edx, dword [0x43734c]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x40bfee
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x40bfee
mov edx, dword [esp + 0x44]
add edx, 0xfffffff4
push edx
call fcn.004292c0
add esp, 4
mov eax, dword [esp + 0x14]
lea esi, [ebp + 0x3c]
push eax
mov ecx, esi
mov eax, dword [eax - 8]
push eax
call fcn.00404520
mov ecx, 0x437ae4
test ecx, ecx
jne 0x40c00e
xor eax, eax
jmp 0x40c019
push 0x437ae4
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x437ae4
push eax
mov ecx, esi
call fcn.00404520
mov ebx, dword [esp + 0x28]
mov eax, dword [ebp + 0x30]
lea ecx, [ebp + 0x2c]
lea edx, [esp + 0x10]
push edx
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.00410870
mov ebx, dword [ebx + 4]
test ebx, ebx
mov dword [esp + 0x28], ebx
jne 0x40bec0
jmp case.default.0x40b8f9
mov eax, dword [esp + 0x830]
test eax, eax
je 0x40c063
mov dword [esp + 0x20], eax
test ebx, ebx
je case.default.0x40b8f9
mov eax, dword [ebx + 0xc]
xor esi, esi
mov dword [esp + 0x10], eax
mov ecx, dword [eax + 8]
lea edi, [eax + 0xc8]
test ecx, ecx
je 0x40c089
mov ecx, dword [esp + 0x20]
push edi
push ecx
jmp 0x40c0a1
mov eax, dword [ebx]
test eax, eax
je 0x40c0af
mov eax, dword [eax + 0xc]
test eax, eax
je 0x40c0af
mov edx, dword [esp + 0x20]
add eax, 0xc8
push eax
push edx
call fcn.0042a63f
add esp, 8
test eax, eax
je 0x40c126
jmp 0x40c0c9
mov eax, dword [ebx + 0xc]
add eax, 0xc8
push eax
mov eax, dword [esp + 0x24]
push eax
call fcn.0042a63f
add esp, 8
test eax, eax
je 0x40c126
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, 0x43be60
call fcn.004062e0
test eax, eax
je 0x40c195
push edi
mov ecx, 0x43be60
call fcn.00406270
test eax, eax
jne 0x40c195
mov eax, dword [ebp + 0xc]
lea ecx, [ebp + 8]
lea edx, [esp + 0x10]
mov esi, 1
push edx
push eax
lea eax, [esp + 0x38]
push eax
call fcn.00410870
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, ebp
call fcn.0040e850
mov edx, dword [esp + 0x10]
mov ecx, ebp
push edx
call fcn.0040e8d0
mov eax, dword [ebp + 0x30]
lea ecx, [ebp + 0x2c]
lea edx, [esp + 0x10]
push edx
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.00410870
mov eax, dword [esp + 0x10]
mov edi, dword [ebp + 0x238]
mov ecx, dword [eax + 0x1c]
add edi, ecx
mov dword [ebp + 0x238], edi
mov edx, dword [ebp + 0x23c]
adc edx, 0
mov dword [ebp + 0x23c], edx
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x40c2af
test esi, esi
je 0x40c2af
mov ecx, dword [ebp + 0x24c]
xor esi, esi
test ecx, ecx
jbe 0x40c1bc
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea edi, [ebp + 0x3c]
mov edx, 0x437ae8
test edx, edx
jne 0x40c199
xor eax, eax
jmp 0x40c1a0
xor esi, esi
jmp 0x40c126
push 0x437ae8
call ebx
push 0x437ae8
push eax
mov ecx, edi
call fcn.00404520
mov eax, dword [ebp + 0x24c]
inc esi
cmp esi, eax
jb 0x40c188
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
push 0
lea ecx, [esp + 0x3c]
push eax
push ecx
call fcn.004249d0
mov edi, eax
mov eax, dword [esp + 0x20]
add esp, 0xc
mov esi, dword [edi]
cmp eax, esi
je 0x40c244
mov ecx, dword [eax - 0xc]
test ecx, ecx
jge 0x40c1ee
mov ecx, dword [0x43734c]
add eax, 0xfffffff4
cmp eax, ecx
jne 0x40c1f5
mov eax, dword [esi - 0xc]
test eax, eax
jge 0x40c22b
mov ebx, dword [esi - 8]
lea ecx, [esp + 0x14]
push ebx
call fcn.00402440
test eax, eax
je 0x40c244
mov edi, dword [esp + 0x14]
mov ecx, ebx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x14]
mov dword [eax - 8], ebx
mov ecx, dword [esp + 0x14]
mov byte [ebx + ecx], 0
jmp 0x40c244
lea ecx, [esp + 0x14]
call fcn.00402400
mov edi, dword [edi]
mov dword [esp + 0x14], edi
add edi, 0xfffffff4
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x38]
mov ecx, dword [0x43734c]
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x40c273
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x40c273
mov eax, dword [esp + 0x38]
add eax, 0xfffffff4
push eax
call fcn.004292c0
add esp, 4
mov eax, dword [esp + 0x14]
lea esi, [ebp + 0x3c]
push eax
mov ecx, dword [eax - 8]
push ecx
mov ecx, esi
call fcn.00404520
mov edx, 0x437ae0
test edx, edx
jne 0x40c293
xor eax, eax
jmp 0x40c29e
push 0x437ae0
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x437ae0
push eax
mov ecx, esi
call fcn.00404520
mov ebx, dword [esp + 0x28]
mov eax, dword [ebx + 8]
test eax, eax
je 0x40c2cb
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x82c]
push ebx
push eax
push ecx
mov ecx, ebp
call fcn.0040b5a0
mov ebx, dword [ebx + 4]
test ebx, ebx
mov dword [esp + 0x28], ebx
jne 0x40c06b
jmp case.default.0x40b8f9
test ebx, ebx
je case.default.0x40b8f9
mov ecx, dword [esp + 0x830]
mov eax, dword [ebx + 0xc]
xor edx, edx
mov dword [esp + 0x10], eax
cmp ecx, edx
lea edi, [eax + 0xc8]
mov dword [esp + 0x18], edx
mov dword [esp + 0x2c], edx
je 0x40c3b8
mov esi, dword [eax + 8]
push edi
cmp esi, edx
je 0x40c329
push ecx
call fcn.0042a63f
add esp, 8
test eax, eax
je 0x40c39d
mov esi, 1
jmp 0x40c360
mov ecx, 0x43d1f0
call fcn.004052c0
mov edx, dword [ebx]
mov esi, eax
mov eax, dword [edx + 0xc]
test eax, eax
je 0x40c35c
add eax, 0xc8
push eax
mov eax, dword [esp + 0x834]
push eax
call fcn.0042a63f
mov esi, eax
add esp, 8
neg esi
sbb esi, esi
neg esi
test esi, esi
je 0x40c39d
push edi
mov ecx, 0x43d1f0
call fcn.004052c0
test eax, eax
jne 0x40c399
push edi
mov ecx, 0x43be60
call fcn.00406270
test eax, eax
jne 0x40c399
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, 0x43be60
call fcn.004062e0
test eax, eax
je 0x40c399
mov dword [esp + 0x18], 1
test esi, esi
jne 0x40c3b4
push edi
mov ecx, 0x43d1f0
call fcn.004052c0
test eax, eax
je 0x40c3b4
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x10]
mov edx, dword [eax]
push 0
lea eax, [esp + 0x40]
push edx
push eax
call fcn.004249d0
mov edi, eax
mov eax, dword [esp + 0x20]
add esp, 0xc
mov esi, dword [edi]
cmp eax, esi
je 0x40c448
mov ecx, dword [eax - 0xc]
test ecx, ecx
jge 0x40c3ea
mov ecx, dword [0x43734c]
add eax, 0xfffffff4
cmp eax, ecx
jne 0x40c3f1
mov eax, dword [esi - 0xc]
test eax, eax
jge 0x40c42f
mov eax, dword [esi - 8]
lea ecx, [esp + 0x14]
push eax
mov dword [esp + 0x20], eax
call fcn.00402440
test eax, eax
je 0x40c448
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
mov ecx, eax
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x14]
mov dword [ecx - 8], eax
mov edx, dword [esp + 0x14]
mov byte [eax + edx], 0
jmp 0x40c448
lea ecx, [esp + 0x14]
call fcn.00402400
mov edi, dword [edi]
mov dword [esp + 0x14], edi
add edi, 0xfffffff4
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x3c]
mov edx, dword [0x43734c]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x40c477
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x40c477
mov edx, dword [esp + 0x3c]
add edx, 0xfffffff4
push edx
call fcn.004292c0
add esp, 4
mov eax, dword [esp + 0x18]
test eax, eax
je 0x40c4fc
mov edi, dword [ebp + 0xc]
lea esi, [ebp + 8]
mov ecx, esi
mov eax, dword [edi + 4]
push eax
push edi
call fcn.00410920
mov dword [edi + 4], eax
mov ecx, dword [eax + 4]
lea edx, [esp + 0x10]
mov dword [ecx], eax
add eax, 8
push edx
push eax
call fcn.00410950
mov edx, dword [esi + 8]
mov eax, dword [esp + 0x18]
add esp, 8
inc edx
mov ecx, ebp
mov dword [esi + 8], edx
push eax
call fcn.0040e8d0
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 8]
test eax, eax
je 0x40c4fc
mov eax, dword [esp + 0x14]
lea esi, [ebp + 0x3c]
push eax
mov ecx, esi
mov edx, dword [eax - 8]
push edx
call fcn.00404520
mov eax, 0x437ae4
test eax, eax
je 0x40c4ef
push 0x437ae4
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x437ae4
push eax
mov ecx, esi
call fcn.00404520
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x40c579
mov edi, dword [ebp + 0x24]
lea esi, [ebp + 0x20]
mov ecx, dword [edi + 4]
push ecx
push edi
mov ecx, esi
call fcn.00410920
mov dword [edi + 4], eax
mov edx, dword [eax + 4]
lea ecx, [esp + 0x10]
mov dword [edx], eax
add eax, 8
push ecx
push eax
call fcn.00410950
mov ecx, dword [esi + 8]
mov edx, dword [esp + 0x18]
add esp, 8
inc ecx
mov dword [esi + 8], ecx
mov eax, dword [edx + 8]
test eax, eax
je 0x40c579
mov eax, dword [esp + 0x14]
lea esi, [ebp + 0x40]
push eax
mov ecx, esi
mov eax, dword [eax - 8]
push eax
call fcn.00404520
mov ecx, 0x437ae4
test ecx, ecx
jne 0x40c561
xor eax, eax
jmp 0x40c56c
push 0x437ae4
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x437ae4
push eax
mov ecx, esi
call fcn.00404520
mov esi, dword [ebp + 0x30]
push 0xc
mov edi, dword [esi + 4]
call fcn.00429728
add esp, 4
mov ecx, esi
test esi, esi
jne 0x40c591
mov ecx, eax
mov dword [eax], ecx
mov ecx, edi
test edi, edi
jne 0x40c59b
mov ecx, eax
mov dword [eax + 4], ecx
mov dword [esi + 4], eax
mov edx, dword [eax + 4]
lea ecx, [esp + 0x10]
push ecx
mov dword [edx], eax
add eax, 8
push eax
call fcn.00410950
mov ecx, dword [ebp + 0x34]
add esp, 8
inc ecx
mov dword [ebp + 0x34], ecx
mov eax, dword [ebx + 8]
test eax, eax
je 0x40c5dd
mov edx, dword [esp + 0x830]
mov eax, dword [esp + 0x82c]
push ebx
push edx
push eax
mov ecx, ebp
call fcn.0040b5a0
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x40c2e7
mov esi, dword [ebp + 0x24c]
mov eax, dword [esp + 0x14]
dec esi
pop edi
mov dword [ebp + 0x24c], esi
mov edx, dword [0x43734c]
lea ecx, [eax - 0xc]
pop esi
pop ebp
cmp ecx, edx
pop ebx
je 0x40c628
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x40c628
mov edx, dword [esp + 4]
add edx, 0xfffffff4
push edx
call fcn.004292c0
add esp, 4
mov eax, 1
add esp, 0x818
ret 0xc