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

Disassembly:
sub esp, 0x54
push ebx
push ebp
mov ebp, dword [esp + 0x68]
xor eax, eax
push esi
push edi
lea edi, [eax + 1]
mov dword [esp + 0x10], edi
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 0x68]
movsx eax, byte [ebp]
inc ebp
mov dword [esp + 0x34], esi
mov ecx, eax
cmp eax, 0x25
jne 0x402955
mov bl, byte [ebp]
cmp bl, al
jne 0x4023f7
inc ebp
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x74]
jmp 0x40295f
xor eax, eax
mov dword [esp + 0x20], ebp
xor esi, esi
mov dword [esp + 0x1c], eax
and dword [esp + 0x14], esi
xor edi, edi
and dword [esp + 0x30], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x3c], 0x20
mov edx, ebp
mov ecx, ebp
inc ebp
cmp bl, 0x2d
jne 0x402437
xor eax, eax
inc eax
mov dword [esp + 0x38], eax
jmp 0x4024cc
cmp bl, 0x2c
jne 0x402449
mov dword [esp + 0x14], 3
jmp 0x4024cc
cmp bl, 0x23
jne 0x402457
xor eax, eax
inc eax
mov dword [esp + 0x28], eax
jmp 0x4024cc
push 0x30
pop eax
cmp bl, al
jne 0x402464
mov dword [esp + 0x3c], eax
jmp 0x4024cc
lea eax, [ebx - 0x31]
cmp al, 8
ja 0x40247e
lea eax, [esp + 0x18]
mov ebp, ecx
push eax
push ebp
call fcn.004010e5
mov dword [esp + 0x2c], eax
jmp 0x40249e
cmp bl, 0x2e
jne 0x4024a4
cmp byte [ebp], 0x30
push 1
pop eax
cmove esi, eax
lea eax, [esp + 0x18]
push eax
push ebp
call fcn.004010e5
neg eax
mov dword [esp + 0x1c], eax
add ebp, dword [esp + 0x18]
jmp 0x4024cc
cmp bl, 0x49
jne 0x4024ba
cmp byte [ebp], 0x36
jne 0x4024d4
cmp byte [edx + 2], 0x34
jne 0x4024d4
lea ebp, [edx + 3]
jmp 0x4024c7
cmp bl, 0x6c
jne 0x4024d4
cmp byte [ebp], bl
jne 0x4024d4
lea ebp, [edx + 2]
xor eax, eax
lea edi, [eax + 1]
mov bl, byte [ebp]
jmp 0x402421
mov eax, dword [esp + 0x74]
mov dword [esp + 0x24], esi
add eax, 4
mov esi, dword [esp + 0x34]
mov dword [esp + 0x70], ebp
mov dword [esp + 0x74], eax
mov dword [esp + 0x40], eax
mov ecx, dword [esi]
cmp bl, 0x63
jne 0x402508
mov byte [esp + 0x44], cl
lea esi, [esp + 0x44]
mov byte [esp + 0x45], 0
jmp 0x402834
cmp bl, 0x73
jne 0x402521
mov esi, ecx
test ecx, ecx
jne 0x402834
mov esi, str._null_
jmp 0x402834
cmp bl, 0x77
jne 0x402555
cmp byte [ebp], 0x73
jne 0x40259b
lea ebp, [edx + 2]
test ecx, ecx
je 0x402517
push 0x5a
push ecx
call fcn.004020eb
mov ebx, eax
mov dword [esp + 0x30], ebx
mov esi, ebx
test ebx, ebx
jne 0x402834
mov esi, str._InternalError_
jmp 0x402834
cmp bl, 0x55
jne 0x40257f
cmp byte [ebp], 0x38
jne 0x40259b
cmp byte [edx + 2], 0x73
jne 0x40259b
lea ebp, [edx + 3]
test ecx, ecx
je 0x402517
push 0x55
push ecx
call fcn.00402216
mov dword [esp + 0x30], eax
mov esi, eax
test eax, eax
jmp 0x402545
cmp bl, 0x78
je 0x402766
cmp bl, 0x58
je 0x402766
cmp bl, 0x64
je 0x4025ab
cmp bl, 0x75
je 0x4025ab
mov ebp, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
push 0x25
pop eax
jmp 0x4023ea
xor esi, esi
xor edx, edx
inc esi
mov dword [esp + 0x20], edx
mov dword [esp + 0x28], esi
test edi, edi
jne 0x402664
cmp bl, 0x64
jne 0x4025cf
test ecx, ecx
jns 0x4025cf
neg ecx
mov dword [esp + 0x20], esi
lea esi, [esp + 0x63]
mov byte [esp + 0x63], dl
cmp dword [esp + 0x24], edx
jne 0x4025ef
test ecx, ecx
jne 0x4025ef
lea esi, [esp + 0x62]
mov byte [esp + 0x62], 0x30
jmp 0x402834
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
mov eax, ecx
xor edx, edx
push 0xa
pop ecx
div ecx
mov ecx, eax
lea eax, [edx + 0x30]
mov dword [esp + 0x24], eax
test ebp, ebp
js 0x402630
cmp dword [esp + 0x14], 0
je 0x40262b
test ebp, ebp
je 0x40262b
mov eax, ebp
cdq
idiv dword [esp + 0x14]
mov eax, dword [esp + 0x24]
test edx, edx
jne 0x40262b
dec esi
mov byte [esi], 0x2c
dec esi
mov byte [esi], al
jmp 0x402654
test edi, edi
jne 0x402643
cmp eax, 0x30
jne 0x402643
cmp dword [esp + 0x28], edi
je 0x402643
test ecx, ecx
jne 0x402654
and dword [esp + 0x28], 0
dec esi
mov byte [esi], al
cmp ebp, 0xffffffff
jne 0x402654
dec esi
mov byte [esi], 0x2e
inc ebp
test ecx, ecx
jne 0x4025f7
mov dword [esp + 0x1c], ebp
mov ecx, ebp
jmp 0x402729
mov edi, dword [eax]
xor ebp, ebp
add dword [esp + 0x74], 4
or ebp, ecx
or edi, edx
cmp bl, 0x64
jne 0x402684
cmp dword [eax], edx
jge 0x402684
neg ebp
mov dword [esp + 0x20], esi
adc edi, edx
neg edi
lea esi, [esp + 0x63]
mov byte [esp + 0x63], dl
cmp dword [esp + 0x24], edx
jne 0x4026aa
mov eax, ebp
or eax, edi
jne 0x4026aa
mov ebp, dword [esp + 0x70]
lea esi, [esp + 0x62]
mov byte [esp + 0x62], 0x30
jmp 0x402834
lea eax, [esp + 0x18]
push eax
push 0xa
pop eax
push eax
push edi
push ebp
call fcn.00402ac7
mov ecx, dword [esp + 0x1c]
mov edi, edx
mov edx, dword [esp + 0x18]
mov ebp, eax
add edx, 0x30
mov dword [esp + 0x34], edx
test ecx, ecx
js 0x4026f4
cmp dword [esp + 0x14], 0
je 0x4026ef
test ecx, ecx
je 0x4026ef
mov eax, ecx
cdq
idiv dword [esp + 0x14]
test edx, edx
mov edx, dword [esp + 0x34]
jne 0x4026ef
dec esi
mov byte [esi], 0x2c
dec esi
mov byte [esi], dl
jmp 0x40271e
cmp dword [esp + 0x24], 0
jne 0x40270d
cmp edx, 0x30
jne 0x40270d
cmp dword [esp + 0x28], 0
je 0x40270d
mov eax, ebp
or eax, edi
jne 0x40271e
and dword [esp + 0x28], 0
dec esi
mov byte [esi], dl
cmp ecx, 0xffffffff
jne 0x40271e
dec esi
mov byte [esi], 0x2e
inc ecx
mov eax, ebp
or eax, edi
mov dword [esp + 0x1c], ecx
jne 0x4026aa
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x70]
test ecx, ecx
jns 0x402746
neg ecx
dec esi
mov byte [esi], 0x30
sub ecx, 1
jne 0x402737
dec esi
mov byte [esi], 0x2e
jmp 0x402748
jne 0x40274c
dec esi
mov byte [esi], 0x30
cmp bl, 0x64
jne 0x402834
test edi, edi
je 0x402834
dec esi
mov byte [esi], 0x2d
jmp 0x402834
push 0x37
pop edx
xor eax, eax
cmp bl, 0x78
push 0x57
pop esi
cmove edx, esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x34], edx
lea esi, [esp + 0x63]
mov byte [esp + 0x63], al
test edi, edi
jne 0x4027cd
xor ebp, ebp
mov edx, ecx
shr ecx, 4
and edx, 0xf
mov ebx, edx
cmp edx, 9
ja 0x40279e
add ebx, 0x30
jmp 0x4027a2
add ebx, dword [esp + 0x34]
cmp dword [esp + 0x14], 0
je 0x4027bb
cmp edx, 9
cmova edi, ebp
test edi, edi
je 0x4027bb
test al, 3
jne 0x4027bb
dec esi
mov byte [esi], 0x2c
dec esi
inc eax
mov dword [esp + 0x18], eax
mov edi, eax
mov ebp, edi
mov byte [esi], bl
test ecx, ecx
jne 0x40278a
jmp 0x40281f
mov edx, dword [esp + 0x40]
xor edi, edi
add dword [esp + 0x74], 4
or edi, ecx
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x34]
mov edx, dword [edx]
mov ebx, dword [esp + 0x14]
mov eax, edi
shrd edi, edx, 4
and eax, 0xf
shr edx, 4
cmp eax, 9
ja 0x4027fe
add eax, 0x30
jmp 0x402800
add eax, ebp
test ebx, ebx
je 0x402811
test ecx, ecx
je 0x402811
test cl, 3
jne 0x402811
dec esi
mov byte [esi], 0x2c
dec esi
inc ecx
mov byte [esi], al
mov eax, edi
or eax, edx
jne 0x4027e8
mov dword [esp + 0x18], ecx
cmp dword [esp + 0x28], 0
mov ebp, dword [esp + 0x70]
je 0x402834
mov byte [esi - 1], 0x78
sub esi, 2
mov byte [esi], 0x30
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp dword [esp + 0x38], 0
mov edi, eax
je 0x4028bf
add dword [esp + 0x10], edi
mov ebx, edi
mov eax, dword [esp + 0x6c]
dec eax
cmp eax, edi
cmovle ebx, eax
test ebx, ebx
jle 0x402879
push ebx
push esi
mov esi, dword [esp + 0x70]
push esi
call sub.ntdll.dll_memcpy
mov eax, dword [esp + 0x78]
add esi, ebx
add esp, 0xc
mov dword [esp + 0x68], esi
sub eax, ebx
mov dword [esp + 0x6c], eax
jmp 0x402881
mov esi, dword [esp + 0x68]
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0x2c]
sub ebx, edi
mov edi, dword [esp + 0x10]
test ebx, ebx
jle 0x402932
add edi, ebx
dec eax
cmp eax, ebx
mov dword [esp + 0x10], edi
cmovle ebx, eax
test ebx, ebx
jle 0x402932
push ebx
push 0x20
push esi
call sub.ntdll.dll_memset
add esi, ebx
add esp, 0xc
sub dword [esp + 0x6c], ebx
mov dword [esp + 0x68], esi
jmp 0x402932
mov ebx, dword [esp + 0x2c]
test ebx, ebx
je 0x402901
sub ebx, edi
test ebx, ebx
jle 0x402901
add dword [esp + 0x10], ebx
mov eax, dword [esp + 0x6c]
dec eax
cmp eax, ebx
cmovle ebx, eax
test ebx, ebx
jle 0x402901
mov eax, dword [esp + 0x68]
push ebx
push dword [esp + 0x40]
push eax
call sub.ntdll.dll_memset
mov ecx, dword [esp + 0x74]
add esp, 0xc
add ecx, ebx
sub dword [esp + 0x6c], ebx
mov dword [esp + 0x68], ecx
jmp 0x402905
mov ecx, dword [esp + 0x68]
mov ebx, dword [esp + 0x6c]
add dword [esp + 0x10], edi
lea eax, [ebx - 1]
cmp eax, edi
cmovle edi, eax
test edi, edi
jle 0x40292e
push edi
push esi
push ecx
call sub.ntdll.dll_memcpy
add dword [esp + 0x74], edi
add esp, 0xc
sub ebx, edi
mov dword [esp + 0x6c], ebx
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x68]
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x74]
test eax, eax
je 0x4023ce
push eax
call fcn.00401711
jmp 0x4023c2
mov dword [esp + 0x74], esi
mov eax, ecx
test ecx, ecx
je 0x402984
mov edx, dword [esp + 0x68]
xor ecx, ecx
inc edi
inc ecx
mov dword [esp + 0x10], edi
cmp ebx, ecx
jle 0x4023ce
mov byte [edx], al
inc edx
dec ebx
mov dword [esp + 0x68], edx
mov dword [esp + 0x6c], ebx
jmp 0x4023ce
test ebx, ebx
jle 0x40298b
mov byte [edx], 0
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret 0x10