Function at 0x402c50
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov edi, dword [esp + 0x18]
mov ecx, dword [esi + 0x28]
inc ecx
test edi, edi
mov dword [esi + 0x28], ecx
jl 0x4033f6
cmp edi, dword [esi + 0x6c]
jge 0x4033f6
mov ebx, dword [esp + 0x1c]
test ebx, ebx
jl 0x4033f6
mov al, byte [esi + 0x9c]
test al, al
je 0x402cce
mov eax, dword [esi + 0x90]
test eax, eax
je 0x4033f6
mov ecx, dword [esi + 0x98]
mov edx, dword [esi + 0x94]
push ecx
push edx
push 0x43e
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
sete al
test al, al
mov byte [esi + 0x9c], al
mov dword [esi + 0x90], 0
jne 0x4033f6
cmp dword [esi + 0x10], edi
je 0x402ce3
push edi
mov ecx, esi
call fcn.004022c0
test eax, eax
je 0x4033f6
mov ebp, dword [esp + 0x24]
cmp ebp, 0xffffffff
jne 0x402cfb
mov edi, dword [esp + 0x20]
or ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
mov edx, dword [esi + 4]
mov ecx, dword [esi + 0xc]
xor eax, eax
mov edi, dword [edx + 0x14]
add edi, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, ebx
jl 0x4033f6
mov eax, dword [edx + 0x10]
mov ecx, dword [edx + 0xc]
sub ecx, eax
cmp ecx, ebp
jge 0x402d6b
lea edx, [ebp + ebp]
mov ecx, esi
push edx
call fcn.00403640
test al, al
je 0x4033f6
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x10]
mov ecx, dword [edx + 0xc]
sub ecx, eax
cmp ecx, ebp
jge 0x402d6b
push 0xffffffffffffffff
mov ecx, esi
call fcn.00403640
test al, al
je 0x4033f6
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x10]
mov ecx, dword [edx + 0xc]
sub ecx, eax
cmp ecx, ebp
jl 0x4033f6
mov ecx, dword [esi + 0xc]
mov edx, dword [edx + 0x14]
sub eax, ecx
add edx, ecx
sub eax, ebx
add edx, ebx
push eax
push edx
add edx, ebp
push edx
call dword [sym.imp.MSVCRT.dll_memmove]
mov ecx, dword [esi + 4]
mov eax, dword [esp + 0x2c]
push ebp
push eax
mov edx, dword [ecx + 0x14]
mov ecx, dword [esi + 0xc]
add edx, ebx
add edx, ecx
push edx
call dword [sym.imp.MSVCRT.dll_strncpy]
mov eax, dword [esi + 4]
add esp, 0x18
mov edi, dword [eax + 0x10]
add edi, ebp
mov dword [eax + 0x10], edi
mov edx, dword [esi + 0x88]
mov eax, dword [esi + 0x74]
add edx, ebp
cmp eax, 0xffffffff
mov dword [esi + 0x88], edx
jne 0x402dcd
mov eax, dword [esi + 0x10]
mov dword [esi + 0x78], eax
mov dword [esi + 0x74], eax
jmp 0x402de1
mov ecx, dword [esi + 0x10]
cmp eax, ecx
jle 0x402dd9
mov dword [esi + 0x74], ecx
jmp 0x402de1
cmp dword [esi + 0x78], ecx
jge 0x402de1
mov dword [esi + 0x78], ecx
mov al, byte [esi + 0x3c]
mov byte [esi + 0x84], 1
test al, al
je 0x4033e3
mov al, byte [esi + 0x3d]
test al, al
je 0x4033e3
mov ecx, dword [esi + 0x2c]
mov eax, dword [esi + 0x44]
dec ecx
cmp ecx, eax
jge 0x403316
test ecx, ecx
jl 0x403316
mov al, byte [esi + 0x50]
test al, al
je 0x403316
mov eax, dword [esi + 0x48]
cdq
and edx, 0xfff
add eax, edx
mov edi, eax
mov eax, ecx
cdq
and edx, 0xfff
add eax, edx
sar edi, 0xc
sar eax, 0xc
sub eax, edi
jns 0x402e5f
mov edx, dword [esi + 0x4c]
mov edx, dword [edx + 4]
test edx, edx
je 0x402e55
inc eax
mov dword [esi + 0x4c], edx
jne 0x402e43
jmp 0x402e7d
test eax, eax
jne 0x403316
jmp 0x402e7d
test eax, eax
jle 0x402e7d
mov edx, dword [esi + 0x4c]
mov edx, dword [edx + 8]
test edx, edx
je 0x402e75
dec eax
mov dword [esi + 0x4c], edx
jne 0x402e63
jmp 0x402e7d
test eax, eax
jne 0x403316
mov dword [esi + 0x48], ecx
and ecx, 0x80000fff
jns 0x402e90
dec ecx
or ecx, 0xfffff000
inc ecx
mov eax, dword [esi + 0x4c]
mov edx, dword [eax]
mov ebx, dword [edx + ecx*4]
cmp ebx, 0xffffffff
mov dword [esp + 0x10], ebx
je 0x403316
mov eax, ebx
and eax, 0xf0000000
cmp eax, 0x30000000
jne 0x40308f
mov ecx, dword [esi + 0x10]
mov eax, ebx
sar eax, 8
and eax, 0xfffff
cmp ecx, eax
jne 0x403316
mov ecx, dword [esp + 0x1c]
add ecx, ebp
cmp ecx, 0x100
jge 0x403316
mov eax, dword [esp + 0x1c]
and ebx, 0xff
cmp eax, ebx
jne 0x403316
mov edx, dword [esp + 0x20]
mov edi, dword [esi + 0x34]
lea ebx, [esi + 0x54]
sub edi, 2
mov al, byte [edx]
mov byte [esp + 0x24], al
mov eax, dword [ebx]
cmp edi, eax
jge 0x402f58
test edi, edi
jl 0x402f58
mov al, byte [ebx + 0xc]
test al, al
je 0x402f58
mov eax, dword [ebx + 4]
cdq
and edx, 0xfff
add eax, edx
mov ecx, eax
mov eax, edi
cdq
and edx, 0xfff
add eax, edx
sar ecx, 0xc
sar eax, 0xc
sub eax, ecx
jns 0x40304d
mov edx, dword [ebx + 8]
mov ecx, dword [edx + 4]
test ecx, ecx
je 0x402f50
inc eax
mov dword [ebx + 8], ecx
jne 0x402f3b
jmp 0x40306b
test eax, eax
je 0x40306b
mov byte [esp + 0x18], 0xff
mov eax, dword [esp + 0x24]
and eax, 0xff
push eax
mov dword [esp + 0x28], eax
call dword [sym.imp.MSVCRT.dll_isalpha]
mov edi, dword [esp + 0x1c]
add esp, 4
test eax, eax
je 0x402f92
mov edx, edi
and edx, 0xff
push edx
call dword [sym.imp.MSVCRT.dll_isalpha]
add esp, 4
test eax, eax
jne 0x402ff6
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.MSVCRT.dll_isdigit]
add esp, 4
test eax, eax
je 0x402fba
mov ecx, edi
and ecx, 0xff
push ecx
call dword [sym.imp.MSVCRT.dll_isdigit]
add esp, 4
test eax, eax
jne 0x402ff6
mov edx, dword [esp + 0x24]
push edx
call dword [sym.imp.MSVCRT.dll_isalnum]
add esp, 4
test eax, eax
jne 0x402fe0
and edi, 0xff
push edi
call dword [sym.imp.MSVCRT.dll_isalnum]
add esp, 4
test eax, eax
je 0x402ff6
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.MSVCRT.dll_isspace]
add esp, 4
test eax, eax
je 0x403316
mov ecx, dword [esp + 0x10]
mov edx, dword [esi + 0x2c]
add ecx, ebp
dec edx
push ecx
push edx
lea ecx, [esi + 0x44]
call fcn.00406200
mov ecx, dword [esi + 0x34]
xor edi, edi
dec ecx
test ebp, ebp
mov dword [esi + 0x34], ecx
jle 0x403035
mov eax, dword [esi + 0x34]
mov edx, dword [esp + 0x20]
lea ecx, [eax + 1]
mov dword [esi + 0x34], ecx
mov cl, byte [edi + edx]
push ecx
push eax
mov ecx, ebx
call fcn.00406470
inc edi
cmp edi, ebp
jl 0x403017
mov eax, dword [esi + 0x34]
push 0
push eax
mov ecx, ebx
lea edx, [eax + 1]
mov dword [esi + 0x34], edx
call fcn.00406470
jmp 0x4033d0
test eax, eax
jle 0x40306b
mov ecx, dword [ebx + 8]
mov ecx, dword [ecx + 8]
test ecx, ecx
je 0x403063
dec eax
mov dword [ebx + 8], ecx
jne 0x403051
jmp 0x40306b
test eax, eax
jne 0x402f58
mov edx, dword [ebx + 8]
mov dword [ebx + 4], edi
and edi, 0x80000fff
jns 0x403081
dec edi
or edi, 0xfffff000
inc edi
mov eax, dword [edx]
mov cl, byte [eax + edi]
mov byte [esp + 0x18], cl
jmp 0x402f5d
cmp eax, 0x70000000
jne 0x403316
mov edi, dword [esi + 0x2c]
mov eax, dword [esi + 0x44]
sub edi, 2
cmp edi, eax
jge 0x4030f6
test edi, edi
jl 0x4030f6
mov al, byte [esi + 0x50]
test al, al
je 0x4030f6
mov eax, dword [esi + 0x48]
cdq
and edx, 0xfff
add eax, edx
mov ecx, eax
mov eax, edi
cdq
and edx, 0xfff
add eax, edx
sar ecx, 0xc
sar eax, 0xc
sub eax, ecx
jns 0x403199
mov edx, dword [esi + 0x4c]
mov ecx, dword [edx + 4]
test ecx, ecx
je 0x4030ee
inc eax
mov dword [esi + 0x4c], ecx
jne 0x4030d9
jmp 0x4031b7
test eax, eax
je 0x4031b7
or eax, 0xffffffff
mov ecx, dword [esi + 0x10]
and eax, 0xfffffff
cmp ecx, eax
jne 0x403316
mov ecx, dword [esp + 0x1c]
add ecx, ebp
cmp ecx, 0xfffffff
jge 0x403316
mov eax, dword [esp + 0x1c]
and ebx, 0xfffffff
cmp eax, ebx
jne 0x403316
mov edx, dword [esp + 0x20]
mov ebx, dword [esi + 0x34]
lea edi, [esi + 0x54]
sub ebx, 2
mov al, byte [edx]
mov byte [esp + 0x24], al
mov eax, dword [edi]
cmp ebx, eax
jge 0x4031df
test ebx, ebx
jl 0x4031df
mov al, byte [edi + 0xc]
test al, al
je 0x4031df
mov eax, dword [edi + 4]
cdq
and edx, 0xfff
add eax, edx
mov ecx, eax
mov eax, ebx
cdq
and edx, 0xfff
add eax, edx
sar ecx, 0xc
sar eax, 0xc
sub eax, ecx
jns 0x4032d4
mov edx, dword [edi + 8]
mov ecx, dword [edx + 4]
test ecx, ecx
je 0x4031d7
inc eax
mov dword [edi + 8], ecx
jne 0x403184
jmp 0x4032f2
test eax, eax
jle 0x4031b7
mov ecx, dword [esi + 0x4c]
mov ecx, dword [ecx + 8]
test ecx, ecx
je 0x4031af
dec eax
mov dword [esi + 0x4c], ecx
jne 0x40319d
jmp 0x4031b7
test eax, eax
jne 0x4030f6
mov dword [esi + 0x48], edi
and edi, 0x80000fff
jns 0x4031ca
dec edi
or edi, 0xfffff000
inc edi
mov edx, dword [esi + 0x4c]
mov eax, dword [edx]
mov eax, dword [eax + edi*4]
jmp 0x4030f9
test eax, eax
je 0x4032f2
mov byte [esp + 0x18], 0xff
mov eax, dword [esp + 0x24]
and eax, 0xff
push eax
mov dword [esp + 0x28], eax
call dword [sym.imp.MSVCRT.dll_isalpha]
mov ebx, dword [esp + 0x1c]
add esp, 4
test eax, eax
je 0x403219
mov edx, ebx
and edx, 0xff
push edx
call dword [sym.imp.MSVCRT.dll_isalpha]
add esp, 4
test eax, eax
jne 0x40327d
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.MSVCRT.dll_isdigit]
add esp, 4
test eax, eax
je 0x403241
mov ecx, ebx
and ecx, 0xff
push ecx
call dword [sym.imp.MSVCRT.dll_isdigit]
add esp, 4
test eax, eax
jne 0x40327d
mov edx, dword [esp + 0x24]
push edx
call dword [sym.imp.MSVCRT.dll_isalnum]
add esp, 4
test eax, eax
jne 0x403267
and ebx, 0xff
push ebx
call dword [sym.imp.MSVCRT.dll_isalnum]
add esp, 4
test eax, eax
je 0x40327d
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.MSVCRT.dll_isspace]
add esp, 4
test eax, eax
je 0x403316
mov ecx, dword [esp + 0x10]
mov edx, dword [esi + 0x2c]
add ecx, ebp
dec edx
push ecx
push edx
lea ecx, [esi + 0x44]
call fcn.00406200
mov ecx, dword [esi + 0x34]
xor ebx, ebx
dec ecx
test ebp, ebp
mov dword [esi + 0x34], ecx
jle 0x4032bc
mov eax, dword [esi + 0x34]
mov edx, dword [esp + 0x20]
lea ecx, [eax + 1]
mov dword [esi + 0x34], ecx
mov cl, byte [ebx + edx]
push ecx
push eax
mov ecx, edi
call fcn.00406470
inc ebx
cmp ebx, ebp
jl 0x40329e
mov eax, dword [esi + 0x34]
push 0
push eax
mov ecx, edi
lea edx, [eax + 1]
mov dword [esi + 0x34], edx
call fcn.00406470
jmp 0x4033d0
test eax, eax
jle 0x4032f2
mov ecx, dword [edi + 8]
mov ecx, dword [ecx + 8]
test ecx, ecx
je 0x4032ea
dec eax
mov dword [edi + 8], ecx
jne 0x4032d8
jmp 0x4032f2
test eax, eax
jne 0x4031df
mov edx, dword [edi + 8]
mov dword [edi + 4], ebx
and ebx, 0x80000fff
jns 0x403308
dec ebx
or ebx, 0xfffff000
inc ebx
mov eax, dword [edx]
mov cl, byte [eax + ebx]
mov byte [esp + 0x18], cl
jmp 0x4031e4
xor edi, edi
test ebp, ebp
jle 0x40333d
lea ebx, [esi + 0x54]
mov eax, dword [esi + 0x34]
mov edx, dword [esp + 0x20]
lea ecx, [eax + 1]
mov dword [esi + 0x34], ecx
mov cl, byte [edi + edx]
push ecx
push eax
mov ecx, ebx
call fcn.00406470
inc edi
cmp edi, ebp
jl 0x40331f
mov eax, dword [esi + 0x34]
push 0
push eax
lea ecx, [esi + 0x54]
lea edx, [eax + 1]
mov dword [esi + 0x34], edx
call fcn.00406470
mov edx, dword [esp + 0x1c]
mov eax, dword [esi + 0x10]
add ebp, edx
cmp eax, 0xfffff
jge 0x403387
test eax, eax
jl 0x403387
cmp ebp, 0x100
jge 0x403387
mov ecx, dword [esi + 0x2c]
or eax, 0x300000
shl eax, 8
or eax, ebp
lea edx, [ecx + 1]
push eax
push ecx
mov dword [esi + 0x2c], edx
lea ecx, [esi + 0x44]
jmp 0x4033cb
cmp ebp, 0xfffffff
jge 0x4033d0
test ebp, ebp
jl 0x4033d0
cmp eax, 0xfffffff
jge 0x4033d0
test eax, eax
jl 0x4033d0
mov ecx, dword [esi + 0x2c]
or eax, 0x70000000
push eax
lea edi, [esi + 0x44]
lea edx, [ecx + 1]
push ecx
mov ecx, edi
mov dword [esi + 0x2c], edx
call fcn.00406200
mov eax, dword [esi + 0x2c]
or ebp, 0x70000000
push ebp
push eax
lea ecx, [eax + 1]
mov dword [esi + 0x2c], ecx
mov ecx, edi
call fcn.00406200
mov edx, dword [esi + 0x2c]
mov eax, dword [esi + 0x34]
mov ecx, esi
mov dword [esi + 0x30], edx
mov dword [esi + 0x38], eax
call fcn.00405d70
mov ecx, dword [esi + 4]
pop edi
mov eax, dword [ecx + 0x14]
mov ecx, dword [esi + 0xc]
pop esi
pop ebp
add eax, ecx
pop ebx
pop ecx
ret 0x10
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret 0x10