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

Disassembly:
push ebp
mov ebp, edx
push edi
push esi
push ebx
sub esp, 0x10c
mov ebx, dword [esp + 0x128]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x24], ecx
lea ecx, [esp + 0x70]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x18], 0
mov dword [eax + 0x1c], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
lea eax, [edx + 4]
mov dword [ebx], 0
mov edx, eax
mov dword [ebx + 4], 0
mov dword [esp + 0x14], eax
mov eax, ebp
call fcn.00401660
test eax, eax
jne 0x40243d
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
mov ecx, edx
xor ecx, 6
or ecx, eax
je 0x402500
mov ecx, edx
xor ecx, 7
or ecx, eax
je 0x402450
mov edi, dword [esp + 0x18]
mov ecx, edx
xor ecx, 8
mov edi, dword [edi + 4]
or ecx, eax
mov dword [esp + 0x24], edi
je 0x4025a3
mov esi, edi
mov edi, dword [esp + 0x12c]
mov dword [edi], esi
or eax, edx
setne al
movzx eax, al
shl eax, 2
add esp, 0x10c
pop ebx
pop esi
pop edi
pop ebp
ret
lea esi, [esp + 0x80]
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x20], esi
jmp 0x402482
mov ecx, dword [ebp + 4]
mov edi, dword [esp + 0xc0]
xor edx, edx
mov eax, edx
cmp ecx, edi
sbb eax, dword [esp + 0xc4]
jb 0x4024e6
sub ecx, edi
add dword [ebp], edi
mov dword [ebp + 4], ecx
mov ecx, esi
mov edx, ebx
mov eax, ebp
call fcn.00401660
test eax, eax
jne 0x40243d
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov ecx, eax
xor ecx, 0xb
or ecx, edx
je 0x402850
or edx, eax
je 0x4024e6
lea ecx, [esp + 0xc0]
mov edx, ebx
mov eax, ebp
call fcn.00401660
test eax, eax
je 0x402461
jmp 0x40243d
mov edx, dword [esp + 0x68]
xor eax, eax
jmp 0x4024e2
cmp byte [esp + eax + 0xc0], 0
je 0x402e4f
add eax, 1
cmp eax, edx
jne 0x4024d1
add esp, 0x10c
mov eax, 0x10
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, ebx
mov ebx, dword [esp + 0x14]
mov eax, ebp
mov edx, ebx
call fcn.00401660
test eax, eax
jne 0x40243d
mov edx, dword [esp + 0x18]
mov eax, ebp
call fcn.00401ed0
test eax, eax
jne 0x40243d
lea esi, [esp + 0x80]
jmp 0x402554
mov ecx, dword [ebp + 4]
mov edi, dword [esp + 0xc0]
xor edx, edx
mov eax, edx
cmp ecx, edi
sbb eax, dword [esp + 0xc4]
jb 0x4024e6
sub ecx, edi
add dword [ebp], edi
mov dword [ebp + 4], ecx
mov ecx, esi
mov edx, ebx
mov eax, ebp
call fcn.00401660
test eax, eax
jne 0x40243d
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov ecx, eax
xor ecx, 9
or ecx, edx
je 0x402bcf
or edx, eax
je 0x4024e6
lea ecx, [esp + 0xc0]
mov edx, ebx
mov eax, ebp
call fcn.00401660
test eax, eax
je 0x402533
jmp 0x40243d
lea eax, [esp + 0x80]
mov dword [esp + 0x28], edi
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x20], eax
nop
lea esi, [esi]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov eax, ebp
call fcn.00401660
test eax, eax
jne 0x40243d
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0x84]
mov edx, esi
mov ecx, edi
xor edx, 0xd
or ecx, edx
je 0x402770
mov ecx, esi
mov ebx, edi
mov edx, 1
add ecx, 0xfffffff7
adc ebx, 0xffffffff
cmp edx, ecx
sbb eax, ebx
jb 0x402720
mov eax, dword [esp + 0x12c]
mov edx, dword [eax + 8]
test edx, edx
je 0x402aec
mov eax, dword [esp + 0x12c]
mov ebx, dword [esp + 0x28]
mov edx, edi
mov dword [eax], ebx
mov ebx, dword [esp + 0x30]
mov dword [eax + 4], ebx
mov eax, esi
xor eax, 9
or edx, eax
je 0x402d60
mov edx, edi
or edx, esi
je 0x402b71
mov ebx, dword [esp + 0x14]
jmp 0x4026da
lea ecx, [esp + 0xc0]
mov edx, ebx
mov eax, ebp
call fcn.00401660
test eax, eax
jne 0x40243d
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0xc0]
xor edi, edi
cmp eax, edx
sbb edi, dword [esp + 0xc4]
jb 0x4024e6
sub eax, edx
add dword [ebp], edx
mov dword [ebp + 4], eax
mov ecx, dword [esp + 0x20]
mov edx, ebx
mov eax, ebp
call fcn.00401660
test eax, eax
jne 0x40243d
mov edi, dword [esp + 0x84]
mov esi, dword [esp + 0x80]
mov edx, edi
or edx, esi
je 0x402b71
mov eax, esi
mov edx, edi
xor eax, 0xa
or edx, eax
jne 0x402672
mov eax, dword [ebp]
mov edi, dword [esp + 0x12c]
mov edx, ebx
mov ecx, dword [esp + 0x30]
mov dword [edi + 0x18], eax
mov eax, ebp
call fcn.00401a20
test eax, eax
jne 0x40243d
mov edi, dword [esp + 0x12c]
mov eax, dword [ebp]
sub eax, dword [edi + 0x18]
mov dword [edi + 0x1c], eax
jmp 0x4026ad
mov eax, esi
or eax, edi
je 0x40262d
lea ebx, [esp + 0xc0]
mov edx, dword [esp + 0x14]
mov eax, ebp
mov ecx, ebx
call fcn.00401660
test eax, eax
jne 0x40243d
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0xc0]
xor ebx, ebx
mov edi, ebx
cmp eax, edx
sbb edi, dword [esp + 0xc4]
jb 0x4024e6
sub eax, edx
add dword [ebp], edx
mov dword [ebp + 4], eax
jmp 0x4025e0
mov ecx, dword [esp + 0x24]
mov eax, dword [ebp]
mov dword [esp + 0x30], 0
mov edi, dword [esp + 0x12c]
test ecx, ecx
mov dword [edi + 8], eax
je 0x402840
mov dword [esp + 0x28], 0
xor esi, esi
mov edi, pe_nt_image_headers32
lea ebx, [esp + 0xc0]
mov edx, ebx
mov eax, ebp
call fcn.00401ed0
test eax, eax
jne 0x40243d
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0xc0]
add edx, eax
mov dword [esp + 0x28], edx
jb 0x402ae2
test eax, eax
je 0x402810
mov edx, dword [esp + 0x38]
lea edx, [eax + edx - 1]
mov dword [esp + 0x38], edx
cmp eax, 1
jne 0x402810
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0xc]
test edx, edx
je 0x402810
mov ecx, esi
shr ecx, 3
movzx edx, byte [edx + ecx]
mov ecx, esi
and ecx, 7
mov dword [esp + 0x3c], edx
mov edx, edi
sar edx, cl
test dword [esp + 0x3c], edx
jne 0x402814
nop
lea esi, [esi]
add dword [esp + 0x30], eax
add esi, 1
cmp esi, dword [esp + 0x24]
jne 0x4027a7
mov eax, dword [esp + 0x12c]
mov eax, dword [eax + 8]
mov edi, dword [ebp]
sub edi, eax
mov eax, edi
mov edi, dword [esp + 0x12c]
mov dword [edi + 0xc], eax
jmp 0x4025e0
mov dword [esp + 0x28], 0
jmp 0x402827
lea edx, [esp + 0x64]
mov eax, ebp
call fcn.00401ed0
test eax, eax
jne 0x40243d
mov ecx, dword [esp + 0x64]
cmp dword [esp + 0x24], ecx
jb 0x402ae2
mov eax, dword [esp + 0x18]
mov dword [eax + 4], ecx
mov eax, dword [ebp + 4]
test eax, eax
je 0x4024e6
sub eax, 1
mov dword [ebp + 4], eax
mov eax, dword [ebp]
lea edx, [eax + 1]
mov dword [ebp], edx
movzx eax, byte [eax]
mov byte [esp + 0x3c], al
test al, al
jne 0x402c77
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
lea eax, [ecx*4 + 4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x130]
mov dword [esp], eax
call dword [eax]
mov esi, dword [esp + 0x18]
mov dword [esi + 0x14], eax
test eax, eax
je 0x402c6d
mov eax, dword [esp + 0x64]
lea eax, [eax*4 + 4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x130]
mov dword [esp], eax
call dword [eax]
mov edi, dword [esp + 0x18]
mov dword [edi + 0x18], eax
test eax, eax
je 0x402c6d
mov eax, dword [esp + 0x64]
lea eax, [eax*4 + 4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x130]
mov dword [esp], eax
call dword [eax]
mov dword [edi + 0x1c], eax
test eax, eax
je 0x402c6d
mov eax, dword [esp + 0x64]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x130]
mov dword [esp], eax
call dword [eax]
mov dword [edi + 0x20], eax
test eax, eax
je 0x402c6d
mov eax, dword [esp + 0x78]
mov edi, dword [esp + 0x64]
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x38], eax
mov dword [esp + 0x30], edi
test edi, edi
je 0x402eb4
lea edi, [esp + 0x78]
mov dword [esp + 0x30], 0
mov dword [esp + 0x28], edi
mov dword [esp + 0x4c], ebp
mov esi, dword [esp + 0x30]
sub eax, dword [esp + 0x38]
lea edi, [esi*4]
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x18]
mov edx, dword [edi + 0x14]
mov dword [edx + esi*4], eax
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x68]
call fcn.00401ed0
test eax, eax
jne 0x40243d
mov eax, dword [esp + 0x68]
sub eax, 1
cmp eax, 0x3f
ja 0x402ae2
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x4024e6
mov edx, dword [esp + 0x78]
sub eax, 1
mov dword [esp + 0x7c], eax
lea ecx, [edx + 1]
mov dword [esp + 0x78], ecx
movzx ebx, byte [edx]
test bl, 0xc0
jne 0x402ae2
mov esi, ebx
and esi, 0xf
mov edx, esi
movzx ebp, dl
cmp dl, 8
ja 0x402ae2
cmp ebp, eax
ja 0x4024e6
xor edi, edi
xor esi, esi
mov dword [esp + 0x24], ecx
mov edx, ebp
jmp 0x402a74
add esi, eax
and ebx, 0x20
jne 0x402b95
mov ebx, dword [esp + 0x68]
add edi, 1
cmp edi, ebx
jae 0x402e36
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x4024e6
mov edx, dword [esp + 0x78]
sub eax, 1
mov dword [esp + 0x7c], eax
lea ebx, [edx + 1]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x78], ebx
movzx ebx, byte [edx]
test bl, 0xc0
jne 0x402ae2
mov ebp, ebx
and ebp, 0xf
mov edx, ebp
mov ecx, ebp
movzx edx, dl
cmp cl, 8
ja 0x402ae2
cmp eax, edx
jb 0x4024e6
mov dword [esp + 0x80], 1
sub eax, edx
add edx, dword [esp + 0x24]
mov dword [esp + 0x7c], eax
mov eax, 1
mov dword [esp + 0x78], edx
test bl, 0x10
je 0x402a13
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
mov eax, ebp
call fcn.00401ed0
test eax, eax
jne 0x40243d
lea edx, [esp + 0xc0]
mov eax, ebp
call fcn.00401ed0
test eax, eax
jne 0x40243d
mov eax, dword [esp + 0x80]
cmp eax, 0x40
ja 0x402ae2
cmp dword [esp + 0xc0], 1
je 0x402a13
mov eax, 4
jmp 0x40243d
mov eax, dword [esp + 0x18]
mov edx, dword [eax + 0xc]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x30], eax
test edx, edx
je 0x40263f
xor ebx, ebx
test eax, eax
je 0x402b62
mov dword [esp + 0x1c], edi
xor ecx, ecx
xor edi, edi
mov dword [esp + 0x30], ebp
mov ebp, eax
mov dword [esp + 0x18], esi
jmp 0x402b36
mov edx, ecx
mov ecx, 7
sub ecx, 1
sar eax, cl
and eax, 1
add ebx, eax
sub ebp, 1
je 0x402b56
mov eax, edi
movzx eax, al
test ecx, ecx
jne 0x402b27
movzx edi, byte [edx]
lea ecx, [edx + 1]
mov eax, edi
movzx eax, al
mov edx, eax
sar edx, 7
add ebx, edx
sub ebp, 1
jne 0x402b20
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
sub eax, ebx
mov dword [esp + 0x30], eax
jmp 0x40263f
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x70]
mov eax, ebp
call fcn.00401660
test eax, eax
jne 0x40243d
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
jmp 0x402432
mov eax, dword [esp + 0x28]
lea edx, [esp + 0xc0]
call fcn.00401ed0
test eax, eax
jne 0x40243d
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0xc0]
cmp eax, edx
jb 0x4024e6
sub eax, edx
add dword [esp + 0x78], edx
mov dword [esp + 0x7c], eax
jmp 0x402a1e
mov edi, dword [esp + 0x18]
mov eax, dword [edi]
lea eax, [eax*8 + 8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x130]
mov dword [esp], eax
call dword [eax]
mov dword [edi + 8], eax
test eax, eax
je 0x402c6d
mov edi, dword [esp + 0x18]
mov esi, dword [edi]
mov edi, 0
test esi, esi
mov dword [esp + 0x28], esi
mov esi, 0
je 0x403420
lea edx, [esp + 0xc0]
xor ebx, ebx
mov dword [esp + 0x20], edx
jmp 0x402c4e
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0xc4]
add esi, eax
adc edi, edx
cmp esi, eax
mov ecx, edi
sbb ecx, edx
jb 0x4024e6
mov eax, dword [esp + 0x18]
add ebx, 1
mov eax, dword [eax + 8]
cmp dword [esp + 0x28], ebx
je 0x402cc8
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov dword [eax + ebx*8], esi
mov dword [eax + ebx*8 + 4], edi
mov eax, ebp
call fcn.00401660
test eax, eax
je 0x402c20
jmp 0x40243d
mov eax, 2
jmp 0x40243d
lea eax, [esp + 0xc0]
mov edx, eax
mov eax, ebp
call fcn.00401ed0
test eax, eax
jne 0x40243d
mov edx, dword [esp + 0xc0]
mov eax, 0x10
cmp dword [esp + 0x124], edx
jbe 0x40243d
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x64]
lea eax, [eax + edx*8]
mov edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], eax
jmp 0x4028af
mov ebx, dword [esp + 0x28]
lea eax, [eax + ebx*8]
mov dword [eax], esi
mov ebx, dword [esp + 0x14]
mov dword [eax + 4], edi
mov ecx, dword [esp + 0x20]
mov edx, ebx
mov eax, ebp
call fcn.00401660
test eax, eax
jne 0x40243d
mov edx, dword [esp + 0xc4]
mov eax, dword [esp + 0xc0]
mov edi, edx
or edi, eax
je 0x402d20
xor eax, 0xa
or edx, eax
je 0x402d44
mov eax, ebp
call fcn.00401c10
test eax, eax
je 0x402cd8
jmp 0x40243d
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x70]
mov eax, ebp
call fcn.00401660
test eax, eax
jne 0x40243d
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
jmp 0x402406
mov eax, dword [esp + 0x18]
mov edx, ebx
mov ecx, dword [eax]
mov eax, ebp
call fcn.00401a20
test eax, eax
jne 0x40243d
jmp 0x402cd8
mov eax, dword [ebp]
mov esi, dword [esp + 0x12c]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x38]
mov ebx, dword [ebp]
mov esi, dword [ebp + 4]
test eax, eax
je 0x402df9
mov edx, dword [esp + 0x38]
test esi, esi
je 0x4024e6
movzx eax, byte [ebx]
lea ecx, [esi - 1]
lea edi, [ebx + 1]
test al, al
jns 0x402db4
test al, 0x40
jne 0x402dba
test ecx, ecx
je 0x4024e6
sub esi, 2
add ebx, 2
sub edx, 1
je 0x402df9
test esi, esi
jne 0x402d87
jmp 0x4024e6
mov esi, ecx
mov ebx, edi
jmp 0x402da6
test al, 0x20
je 0x40347f
test al, 0x10
je 0x403475
test al, 8
je 0x40346b
test al, 4
je 0x403461
test al, 2
je 0x4034e3
and eax, 1
add eax, 7
cmp ecx, eax
jb 0x4024e6
mov esi, ecx
lea ebx, [edi + eax]
sub esi, eax
jmp 0x402da6
mov eax, dword [esp + 0x12c]
mov ecx, dword [esp + 0x20]
mov dword [ebp], ebx
mov dword [ebp + 4], esi
mov edx, dword [esp + 0x14]
sub ebx, dword [eax + 0x10]
mov dword [eax + 0x14], ebx
mov eax, ebp
call fcn.00401660
test eax, eax
jne 0x40243d
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0x84]
jmp 0x402662
cmp esi, 1
jne 0x403347
cmp ebx, 1
jne 0x403347
mov ebx, 1
xor eax, eax
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x48]
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x40]
mov edx, dword [esi + 0x18]
mov dword [edx + ecx], edi
mov edx, dword [esi + 0x1c]
mov dword [edx + ecx], ebp
mov edx, dword [esi + 0x20]
mov ecx, dword [esp + 0x30]
mov byte [edx + ecx], al
mov eax, ebp
add eax, dword [esp + 0x68]
mov dword [esp + 0x40], eax
jb 0x402ae2
mov eax, dword [esi]
mov dword [esp + 0x24], eax
sub eax, edi
cmp eax, ebx
jb 0x4024e6
add edi, ebx
add ecx, 1
mov eax, dword [esp + 0x78]
mov dword [esp + 0x44], edi
mov dword [esp + 0x30], ecx
cmp ecx, dword [esp + 0x64]
jb 0x402980
mov ebp, dword [esp + 0x4c]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x40]
sub eax, dword [esp + 0x38]
mov edx, dword [esi + 0x1c]
mov dword [edx + edi*4], ebx
mov ebx, eax
mov edx, dword [esp + 0x44]
mov eax, dword [esi + 0x18]
mov dword [eax + edi*4], edx
mov eax, dword [esi + 0x14]
mov dword [eax + edi*4], ebx
je 0x40350a
mov eax, dword [esp + 0x130]
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [eax]
mov dword [esi + 0x28], eax
test eax, eax
je 0x402c6d
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x38]
mov dword [esp], eax
mov dword [esp + 4], ebx
call sub.msvcrt.dll_memcpy
mov dword [esp + 0x24], esi
cmp byte [esp + 0x3c], 0
je 0x402f35
cmp dword [esp + 0x7c], 0
jne 0x4024e6
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x4024e6
mov dword [esp + 0x38], ebp
mov esi, dword [esp + 0x78]
mov ebp, eax
jmp 0x403318
test eax, eax
je 0x4024e6
lea edx, [esi + 2]
lea eax, [ebp - 2]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], edx
movzx edx, byte [esi + 1]
test edi, 0x40
je 0x4034ed
test eax, eax
je 0x4024e6
lea eax, [esi + 3]
lea ecx, [ebp - 3]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x78], eax
movzx eax, byte [esi + 2]
shl eax, 8
or eax, edx
xor edx, edx
mov dword [esp + 0x28], eax
test edi, 0x20
je 0x4036c0
test ecx, ecx
je 0x4024e6
lea ebx, [ebp - 4]
lea eax, [esi + 4]
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x78], eax
movzx ecx, byte [esi + 3]
mov dword [esp + 0x20], ebx
xor ebx, ebx
shld ebx, ecx, 0x10
shl ecx, 0x10
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x28]
mov edx, ebx
or ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ebx
mov eax, ecx
test edi, 0x10
je 0x403730
cmp dword [esp + 0x20], 0
je 0x4024e6
lea ebx, [ebp - 5]
lea ecx, [esi + 5]
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x78], ecx
movzx ecx, byte [esi + 4]
mov dword [esp + 0x20], ebx
xor ebx, ebx
shld ebx, ecx, 0x18
shl ecx, 0x18
mov dword [esp + 0x2c], ebx
mov ebx, ecx
or ebx, eax
mov dword [esp + 0x28], ecx
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
mov eax, ecx
or ebx, edx
mov edx, ebx
test edi, 8
je 0x403724
cmp dword [esp + 0x20], 0
je 0x4024e6
lea ecx, [esi + 6]
lea ebx, [ebp - 6]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x78], ecx
movzx ecx, byte [esi + 5]
or ecx, edx
mov edx, ecx
test edi, 4
je 0x403718
test ebx, ebx
je 0x4024e6
lea ecx, [esi + 7]
lea ebx, [ebp - 7]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x78], ecx
movzx ecx, byte [esi + 6]
shl ecx, 8
or ecx, edx
mov edx, ecx
test edi, 2
je 0x40370c
test ebx, ebx
je 0x4024e6
lea ecx, [esi + 8]
lea ebx, [ebp - 8]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x78], ecx
movzx ecx, byte [esi + 7]
shl ecx, 0x10
or ecx, edx
mov edx, ecx
test edi, 1
je 0x403700
test ebx, ebx
je 0x4024e6
lea ecx, [esi + 9]
sub ebp, 9
mov dword [esp + 0x58], eax
mov dword [esp + 0x78], ecx
movzx ecx, byte [esi + 8]
mov dword [esp + 0x7c], ebp
shl ecx, 0x18
or ecx, edx
mov dword [esp + 0x5c], ecx
mov edi, dword [esp + 0x58]
mov ebp, dword [esp + 0x5c]
mov edx, edi
mov eax, ebp
xor edx, 0xc
or edx, ebp
je 0x403517
or eax, edi
je 0x4024e6
mov ebx, dword [esp + 0x7c]
test ebx, ebx
je 0x4024e6
mov ecx, dword [esp + 0x78]
lea eax, [ebx - 1]
mov dword [esp + 0x7c], eax
lea edx, [ecx + 1]
mov dword [esp + 0x78], edx
movzx ebp, byte [ecx]
mov edx, ebp
test dl, dl
jns 0x403430
test eax, eax
je 0x4024e6
lea edx, [ecx + 2]
lea eax, [ebx - 2]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], edx
movzx edx, byte [ecx + 1]
test ebp, 0x40
je 0x403444
test eax, eax
je 0x4024e6
lea eax, [ecx + 3]
lea esi, [ebx - 3]
mov dword [esp + 0x7c], esi
mov dword [esp + 0x78], eax
movzx eax, byte [ecx + 2]
shl eax, 8
or eax, edx
xor edx, edx
mov dword [esp + 0x28], eax
test ebp, 0x20
je 0x40377c
test esi, esi
je 0x4024e6
lea edi, [ebx - 4]
lea eax, [ecx + 4]
mov dword [esp + 0x7c], edi
mov dword [esp + 0x78], eax
movzx esi, byte [ecx + 3]
mov dword [esp + 0x20], edi
xor edi, edi
shld edi, esi, 0x10
shl esi, 0x10
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x28]
mov edx, edi
or esi, dword [esp + 0x30]
mov dword [esp + 0x34], edi
mov eax, esi
test ebp, 0x10
je 0x40373c
cmp dword [esp + 0x20], 0
je 0x4024e6
lea esi, [ebx - 5]
xor edi, edi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x20], esi
lea esi, [ecx + 5]
mov dword [esp + 0x78], esi
movzx esi, byte [ecx + 4]
shld edi, esi, 0x18
shl esi, 0x18
mov dword [esp + 0x2c], edi
mov edi, esi
or edi, eax
mov dword [esp + 0x28], esi
mov esi, edi
mov edi, dword [esp + 0x2c]
mov eax, esi
or edi, edx
mov edx, edi
test ebp, 8
je 0x4037ac
cmp dword [esp + 0x20], 0
je 0x4024e6
lea esi, [ecx + 6]
lea edi, [ebx - 6]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x7c], edi
mov dword [esp + 0x78], esi
movzx esi, byte [ecx + 5]
or esi, edx
mov edx, esi
test ebp, 4
je 0x4037a0
test edi, edi
je 0x4024e6
lea esi, [ecx + 7]
lea edi, [ebx - 7]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x7c], edi
mov dword [esp + 0x78], esi
movzx esi, byte [ecx + 6]
shl esi, 8
or esi, edx
mov edx, esi
test ebp, 2
je 0x403794
test edi, edi
je 0x4024e6
lea esi, [ecx + 8]
lea edi, [ebx - 8]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x7c], edi
mov dword [esp + 0x78], esi
movzx esi, byte [ecx + 7]
shl esi, 0x10
or esi, edx
mov edx, esi
test ebp, 1
je 0x403788
test edi, edi
je 0x4024e6
sub ebx, 9
mov dword [esp + 0x50], eax
mov dword [esp + 0x7c], ebx
lea ebx, [ecx + 9]
movzx ecx, byte [ecx + 8]
mov dword [esp + 0x78], ebx
shl ecx, 0x18
or ecx, esi
mov dword [esp + 0x54], ecx
mov ebp, dword [esp + 0x7c]
mov esi, dword [esp + 0x50]
xor edx, edx
mov edi, dword [esp + 0x54]
mov eax, edx
cmp ebp, esi
sbb eax, edi
jb 0x4024e6
mov eax, esi
mov esi, dword [esp + 0x78]
add esi, eax
sub ebp, eax
je 0x4024e6
lea eax, [ebp - 1]
lea edx, [esi + 1]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], edx
movzx edi, byte [esi]
mov ebx, edi
test bl, bl
js 0x402f50
movzx edi, bl
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], edi
jmp 0x4030fa
lea ebp, [ebx - 1]
cmp esi, ebp
jb 0x4024e6
cmp esi, 0x40
ja 0x402ae2
test esi, esi
je 0x403377
mov eax, dword [esp + 0x20]
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msvcrt.dll_memset
test ebx, ebx
je 0x40339e
lea eax, [esp + 0xc0]
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msvcrt.dll_memset
test ebp, ebp
je 0x40348d
mov dword [esp + 0x24], ebp
xor ebx, ebx
lea edi, [esp + 0x6c]
mov ebp, dword [esp + 0x28]
jmp 0x40340e
mov eax, dword [esp + 0x6c]
cmp esi, eax
jbe 0x4024e6
cmp byte [esp + eax + 0x80], 0
jne 0x4024e6
mov byte [esp + eax + 0x80], 1
mov edx, edi
mov eax, ebp
call fcn.00401ed0
test eax, eax
jne 0x40243d
mov eax, dword [esp + 0x6c]
cmp eax, dword [esp + 0x68]
jae 0x4024e6
cmp byte [esp + eax + 0xc0], 0
jne 0x4024e6
mov byte [esp + eax + 0xc0], 1
add ebx, 1
cmp dword [esp + 0x24], ebx
jbe 0x403489
mov edx, edi
mov eax, ebp
call fcn.00401ed0
test eax, eax
je 0x4033ae
jmp 0x40243d
lea ebx, [esp + 0xc0]
mov dword [esp + 0x20], ebx
jmp 0x402ccf
movzx ebp, dl
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], ebp
jmp 0x4032ee
mov eax, ebp
mov dword [esp + 0x54], 0
shl eax, 8
and eax, 0x3f00
or edx, eax
mov dword [esp + 0x50], edx
jmp 0x4032ee
mov eax, 5
jmp 0x402de8
mov eax, 4
jmp 0x402de8
mov eax, 3
jmp 0x402de8
mov eax, 2
jmp 0x402de8
mov ebp, dword [esp + 0x24]
mov ebx, esi
sub ebx, ebp
cmp ebx, 1
jbe 0x4024c9
xor ebp, ebp
lea edi, [esp + 0x6c]
jmp 0x4034cf
mov eax, dword [esp + 0x6c]
cmp esi, eax
jbe 0x4024e6
cmp byte [esp + eax + 0x80], 0
jne 0x4024e6
add ebp, 1
mov byte [esp + eax + 0x80], 1
cmp ebx, ebp
je 0x4024c9
mov eax, dword [esp + 0x28]
mov edx, edi
call fcn.00401ed0
test eax, eax
je 0x4034a2
jmp 0x40243d
mov eax, 6
jmp 0x402de8
mov eax, edi
mov dword [esp + 0x5c], 0
shl eax, 8
and eax, 0x3f00
or edx, eax
mov dword [esp + 0x58], edx
jmp 0x4030fa
mov dword [esp + 0x24], 0
jmp 0x402f15
cmp dword [esp + 0x40], 0
mov ebp, dword [esp + 0x38]
jne 0x4035da
mov eax, dword [esp + 0x24]
lea esi, [esp + 0x7c]
mov dword [eax + 0x24], 0
lea eax, [esp + 0x78]
mov dword [esp + 0x28], eax
lea eax, [esp + 0xc0]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], ebp
lea ebx, [eax + 0x10]
lea edi, [eax + 0xc]
mov ebp, eax
mov dword [esp + 0x30], ebx
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
mov edx, esi
call fcn.00401660
test eax, eax
jne 0x40243d
mov edx, dword [esp + 0xc4]
mov eax, dword [esp + 0xc0]
mov ebx, edx
or ebx, eax
je 0x4035a4
xor eax, 0xa
or eax, edx
je 0x403637
mov eax, dword [esp + 0x28]
call fcn.00401c10
test eax, eax
je 0x40355c
jmp 0x40243d
mov ebp, dword [esp + 0x24]
mov eax, dword [esp + 0x78]
lea ecx, [esp + 0x70]
mov edx, dword [esp + 0x7c]
mov dword [ebp], eax
mov eax, ebp
mov dword [ebp + 4], edx
mov edx, dword [esp + 0x14]
call fcn.00401660
test eax, eax
jne 0x40243d
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
jmp 0x40240f
mov eax, dword [esp + 0x40]
shl eax, 3
mov dword [esp + 4], eax
mov eax, dword [esp + 0x130]
mov dword [esp], eax
call dword [eax]
mov edi, dword [esp + 0x24]
mov dword [edi + 0x24], eax
test eax, eax
je 0x402c6d
lea eax, [esp + 0x78]
xor ebx, ebx
lea esi, [esp + 0x7c]
mov dword [esp + 0x28], eax
jmp 0x40361d
add ebx, 1
cmp ebx, dword [esp + 0x40]
je 0x40353d
mov eax, dword [edi + 0x24]
mov edx, esi
lea ecx, [eax + ebx*8]
mov eax, dword [esp + 0x28]
call fcn.00401660
test eax, eax
je 0x403610
jmp 0x40243d
mov eax, dword [ebp + 0xc]
mov ebx, dword [esp + 0x64]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x130]
mov dword [esp], eax
call dword [eax + 4]
mov eax, dword [ebp + 0x10]
mov dword [ebp + 0xc], 0
mov dword [esp + 4], eax
mov eax, dword [esp + 0x130]
mov dword [esp], eax
call dword [eax + 4]
mov eax, dword [esp + 0x130]
mov ecx, ebx
mov edx, esi
mov dword [ebp + 0x10], 0
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
mov dword [esp], edi
call fcn.00401b00
test eax, eax
jne 0x40243d
mov edx, dword [esp + 0x130]
mov eax, dword [esp + 0x28]
mov ecx, edi
mov dword [esp + 4], edx
mov edx, dword [esp + 0x30]
mov dword [esp], edx
mov edx, ebx
call fcn.00401950
test eax, eax
je 0x40355c
jmp 0x40243d
mov ecx, 2
mov ebx, 0x20
lea esi, [ebx - 1]
mov ebx, edi
shl ecx, 3
movzx edi, bl
xor ebx, ebx
and edi, esi
mov esi, edi
xor edi, edi
shld edi, esi, cl
shl esi, cl
test cl, 0x20
cmovne edi, esi
cmovne esi, ebx
mov ebp, edi
or esi, eax
mov dword [esp + 0x58], esi
mov esi, ebp
or esi, edx
mov dword [esp + 0x5c], esi
jmp 0x4030fa
mov ecx, 7
mov ebx, 1
jmp 0x4036ca
mov ecx, 6
mov ebx, 2
jmp 0x4036ca
mov ecx, 5
mov ebx, 4
jmp 0x4036ca
mov ecx, 4
mov ebx, 8
jmp 0x4036ca
mov ecx, 3
mov ebx, 0x10
jmp 0x4036ca
mov ecx, 3
mov ebx, 0x10
lea esi, [ebx - 1]
mov ebx, ebp
shl ecx, 3
xor edi, edi
movzx ebp, bl
xor ebx, ebx
and ebp, esi
mov esi, ebp
shld edi, ebp, cl
shl esi, cl
test cl, 0x20
cmovne edi, esi
cmovne esi, ebx
mov ebp, edi
or esi, eax
mov edi, ebp
mov dword [esp + 0x50], esi
or edi, edx
mov dword [esp + 0x54], edi
jmp 0x4032ee
mov ecx, 2
mov ebx, 0x20
jmp 0x403746
mov ecx, 7
mov ebx, 1
jmp 0x403746
mov ecx, 6
mov ebx, 2
jmp 0x403746
mov ecx, 5
mov ebx, 4
jmp 0x403746
mov ecx, 4
mov ebx, 8
jmp 0x403746