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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xec
mov edi, dword [esp + 0x108]
lea ebx, [esp + 0x98]
lea ebp, [esp + 0xbc]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], ebp
sar edi, 1
mov dword [esp + 0x24], edi
shl edi, 2
mov ecx, dword [esp + 0x24]
add ebx, edi
mov dword [esp + 0x74], edi
add edi, ebp
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], edi
mov dword [edi], 0x10000
mov edi, dword [esp + 0x24]
test ecx, ecx
mov dword [ebx], 0x10000
jle 0x439b48
mov ebx, dword [esp + 0x104]
sub edi, 1
xor eax, eax
mov ecx, dword [esp + 0x104]
mov dword [esp + 0x20], edi
shl edi, 2
mov dword [esp + 0x34], edi
add ebx, dword [esp + 0x74]
add ecx, edi
mov dword [esp + 0x80], ebx
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x80]
lea esi, [esi]
mov edx, dword [ecx]
mov esi, dword [edi + eax*4]
neg edx
sub edx, esi
sub esi, dword [ecx]
sub ecx, 4
mov dword [esp + eax*4 + 0x98], edx
mov dword [ebp + eax*4], esi
add eax, 1
cmp eax, ebx
jne 0x439180
mov edi, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x24]
mov ecx, dword [edi]
mov edx, dword [ebx]
mov edi, dword [esp + eax*4 + 0x94]
add ecx, dword [ebp + eax*4 - 4]
sub edi, edx
mov dword [esp + eax*4 + 0x94], edi
mov edx, edi
mov dword [ebp + eax*4 - 4], ecx
sub eax, 1
jne 0x4391b0
cmp dword [esp + 0x24], 1
jle 0x439b74
mov edi, dword [esp + 0x24]
lea eax, [esp + 0x98]
mov dword [esp + 0x1c], 3
mov ebx, dword [esp + 0x24]
add eax, dword [esp + 0x34]
add edi, 1
sub ebx, 2
mov dword [esp + 0x28], edi
mov dword [esp + 0x3c], ebx
lea edi, [esp + 0x98]
shl ebx, 2
add edi, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], edi
mov edi, 2
mov dword [esp + 0x38], ebx
cmp dword [esp + 0x24], edi
jle 0x439291
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x20], eax
jle 0x439323
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov esi, dword [ebx]
mov ebx, dword [eax]
mov eax, dword [esp + 0x24]
nop
lea esi, [esi]
mov edx, dword [ecx]
sub eax, 2
sub edx, esi
mov dword [ecx], edx
mov esi, edx
mov edx, dword [ecx - 4]
sub edx, ebx
mov dword [ecx - 4], edx
mov ebx, edx
sub ecx, 8
lea edx, [eax - 1]
cmp edx, dword [esp + 0x1c]
jg 0x439250
jmp 0x439276
sub edx, 1
mov ecx, dword [esp + eax*4 + 0x90]
sub ecx, dword [esp + eax*4 + 0x98]
cmp edx, edi
mov dword [esp + eax*4 + 0x90], ecx
mov eax, edx
jg 0x439273
mov eax, dword [esp + edi*4 + 0x98]
add dword [esp + 0x1c], 1
add eax, eax
sub dword [esp + edi*4 + 0x90], eax
add edi, 1
cmp edi, dword [esp + 0x28]
jne 0x439220
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x1c], 3
mov edi, 2
mov ebx, dword [esp + 0x38]
add ecx, ebp
add ebx, ebp
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], ebx
cmp dword [esp + 0x24], edi
jle 0x439345
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x1c], ebx
lea edx, [eax - 1]
jge 0x439333
mov ebx, dword [esp + 0x58]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov esi, dword [ebx]
mov ebx, dword [eax]
mov eax, dword [esp + 0x24]
nop
mov edx, dword [ecx]
sub eax, 2
sub edx, esi
mov dword [ecx], edx
mov esi, edx
mov edx, dword [ecx - 4]
sub edx, ebx
mov dword [ecx - 4], edx
mov ebx, edx
sub ecx, 8
lea edx, [eax - 1]
cmp dword [esp + 0x1c], edx
jl 0x439300
jmp 0x439333
mov eax, dword [esp + 0x24]
lea edx, [eax - 1]
jmp 0x439276
sub edx, 1
mov ecx, dword [ebp + eax*4 - 8]
sub ecx, dword [ebp + eax*4]
cmp edi, edx
mov dword [ebp + eax*4 - 8], ecx
mov eax, edx
jl 0x439330
mov eax, dword [ebp + edi*4]
add dword [esp + 0x1c], 1
add eax, eax
sub dword [ebp + edi*4 - 8], eax
add edi, 1
cmp edi, dword [esp + 0x28]
jne 0x4392d4
mov ebx, dword [esp + 0x54]
movsx edi, word [0x456d80]
mov edx, dword [esp + 0x20]
mov ebx, dword [ebx]
mov dword [esp + 0x84], edi
shl edi, 4
test edx, edx
mov dword [esp + 0x78], edi
mov dword [esp + 0x38], ebx
js 0x439b3f
mov esi, edi
movsx ebx, di
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 0x54]
sar esi, 0xf
add esi, 1
sar esi, 1
mov ecx, edi
movzx eax, cx
mov edi, ecx
sar edi, 0x10
imul eax, ebx
imul edi, ebx
imul ecx, esi
sar eax, 0x10
add eax, edi
add eax, dword [edx - 4]
sub edx, 4
add ecx, eax
cmp edx, dword [esp + 0x14]
jne 0x4393a3
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x98]
mov dword [esp + 0x34], 0
mov dword [esp + 0x18], edx
test eax, eax
js 0x439ac6
mov eax, dword [esp + 0x78]
lea edi, [esp + 0x98]
mov dword [esp + 0x50], 0
mov ebx, dword [esp + 0x104]
mov dword [esp + 0x48], 1
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x70], 0
sar eax, 0xf
add eax, 1
sar eax, 1
shl edx, 2
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x20]
shl eax, 2
add edi, eax
add ebx, eax
add eax, ebp
mov dword [esp + 0x68], edi
mov edi, dword [esp + 0x84]
mov dword [esp + 0x88], ebx
lea ebx, [esp + 0x98]
add ebx, edx
add edx, ebp
mov dword [esp + 0x6c], eax
mov dword [esp + 0x60], ebx
movsx ebx, word [0x456d82]
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x64], edx
mov dword [esp + 0x4c], ebx
add edi, 1
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x5c], edi
mov edi, ebx
mov eax, dword [esp + 0x20]
mov esi, edi
mov dword [esp + 0x30], edi
shl esi, 4
test eax, eax
js 0x4399d0
mov edi, dword [esp + 0x38]
movsx ebx, si
sar esi, 0xf
mov edx, dword [esp + 0x20]
add esi, 1
sar esi, 1
mov ecx, edi
lea esi, [esi]
movzx eax, cx
mov edi, ecx
sar edi, 0x10
imul eax, ebx
imul edi, ebx
imul ecx, esi
sar eax, 0x10
add eax, edi
mov edi, dword [esp + 0x18]
add eax, dword [edi + edx*4]
sub edx, 1
add ecx, eax
cmp edx, 0xffffffff
jne 0x4394b0
mov edi, ecx
cmp dword [esp + 0x50], edi
jg 0x4394eb
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x4396f0
mov eax, dword [esp + 0x1c]
test eax, eax
js 0x439501
mov eax, dword [esp + 0x50]
neg eax
cmp eax, edi
jge 0x4396f0
add dword [esp + 0x48], 1
cmp dword [esp + 0x48], 0x80
jle 0x4398d4
add dword [esp + 0x70], 1
cmp dword [esp + 0x70], 0x1e
jg 0x439a6d
movzx edx, word [esp + 0x70]
mov eax, 0x10000
mov edi, dword [esp + 0x108]
mov ebx, dword [esp + 0x104]
add edx, 0xa
movzx edx, dx
mov dword [esp + 4], edi
imul edx, dword [esp + 0x70]
mov dword [esp], ebx
sub eax, edx
mov dword [esp + 8], eax
call fcn.00440ff0
mov ebx, dword [esp + 0x58]
xor eax, eax
mov edi, dword [esp + 0x54]
mov ecx, dword [esp + 0x88]
mov dword [ebx], 0x10000
mov ebx, dword [esp + 0x24]
mov dword [edi], 0x10000
test ebx, ebx
jle 0x439931
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x80]
lea esi, [esi]
mov edx, dword [ecx]
mov esi, dword [edi + eax*4]
neg edx
sub edx, esi
sub esi, dword [ecx]
sub ecx, 4
mov dword [esp + eax*4 + 0x98], edx
mov dword [ebp + eax*4], esi
add eax, 1
cmp eax, ebx
jne 0x439590
mov edi, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x24]
mov ecx, dword [edi]
mov edx, dword [ebx]
mov edi, dword [esp + eax*4 + 0x94]
add ecx, dword [ebp + eax*4 - 4]
sub edi, edx
mov dword [esp + eax*4 + 0x94], edi
mov edx, edi
mov dword [ebp + eax*4 - 4], ecx
sub eax, 1
jne 0x4395c0
cmp dword [esp + 0x24], 1
jle 0x439931
mov dword [esp + 0x1c], 3
mov edi, 2
cmp dword [esp + 0x24], edi
jle 0x439663
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x20], ecx
lea edx, [eax - 1]
jle 0x439648
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x60]
mov esi, dword [ebx]
mov ebx, dword [eax]
mov eax, dword [esp + 0x24]
mov edx, dword [ecx]
sub eax, 2
sub edx, esi
mov dword [ecx], edx
mov esi, edx
mov edx, dword [ecx - 4]
sub edx, ebx
mov dword [ecx - 4], edx
mov ebx, edx
sub ecx, 8
lea edx, [eax - 1]
cmp dword [esp + 0x1c], edx
jl 0x439622
jmp 0x439648
sub edx, 1
mov ecx, dword [esp + eax*4 + 0x90]
sub ecx, dword [esp + eax*4 + 0x98]
cmp edi, edx
mov dword [esp + eax*4 + 0x90], ecx
mov eax, edx
jl 0x439645
mov eax, dword [esp + edi*4 + 0x98]
add dword [esp + 0x1c], 1
add eax, eax
sub dword [esp + edi*4 + 0x90], eax
add edi, 1
cmp edi, dword [esp + 0x5c]
jne 0x4395f7
mov dword [esp + 0x1c], 3
mov ebx, 2
cmp dword [esp + 0x24], ebx
jle 0x439915
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x20], ecx
lea edx, [eax - 1]
jle 0x439903
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x64]
mov edi, dword [eax]
mov esi, dword [edx]
mov eax, dword [esp + 0x24]
mov edx, dword [ecx]
sub eax, 2
sub edx, edi
mov dword [ecx], edx
mov edi, edx
mov edx, dword [ecx - 4]
sub edx, esi
mov dword [ecx - 4], edx
mov esi, edx
sub ecx, 8
lea edx, [eax - 1]
cmp edx, dword [esp + 0x1c]
jg 0x4396c5
jmp 0x439903
xor ebx, ebx
test edi, edi
mov dword [esp + 0x44], edi
sete bl
mov dword [esp + 0x40], 0xffffff00
mov dword [esp + 0x50], ebx
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x3c]
add eax, dword [esp + 0x30]
mov edx, eax
and eax, 1
sar edx, 1
add eax, edx
mov edi, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x20]
shl edi, 4
test eax, eax
js 0x4398cb
mov edx, dword [esp + 0x38]
movsx esi, di
sar edi, 0xf
mov ecx, dword [esp + 0x20]
add edi, 1
sar edi, 1
nop
lea esi, [esi]
movzx eax, dx
mov ebx, edx
sar ebx, 0x10
imul eax, esi
imul ebx, esi
imul edx, edi
sar eax, 0x10
add eax, ebx
mov ebx, dword [esp + 0x18]
add eax, dword [ebx + ecx*4]
sub ecx, 1
add edx, eax
cmp ecx, 0xffffffff
jne 0x439750
test edx, edx
js 0x439787
mov edi, dword [esp + 0x1c]
test edi, edi
jle 0x439890
test edx, edx
jg 0x439797
mov esi, dword [esp + 0x1c]
test esi, esi
jns 0x4398a1
movzx ecx, byte [esp + 0x28]
mov eax, pe_nt_image_headers32
mov dword [esp + 0x1c], edx
mov ebx, dword [esp + 0x2c]
sar eax, cl
add dword [esp + 0x40], eax
mov dword [esp + 0x3c], ebx
add dword [esp + 0x28], 1
cmp dword [esp + 0x28], 3
jne 0x43970f
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x1c]
add eax, 0xffff
cmp eax, 0x1fffe
ja 0x4398b2
sub ecx, edi
je 0x4397fb
mov edx, dword [esp + 0x1c]
mov eax, ecx
sar eax, 1
shl edx, 5
add eax, edx
mov edx, eax
sar edx, 0x1f
idiv ecx
add dword [esp + 0x40], eax
mov eax, dword [esp + 0x48]
mov edx, 0x7fff
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x100]
shl eax, 8
add eax, dword [esp + 0x40]
cmp eax, 0x7fff
cmovg eax, edx
mov word [edi + ebx*2], ax
add ebx, 1
cmp dword [esp + 0x108], ebx
mov dword [esp + 0x34], ebx
jle 0x439ab2
mov eax, ebx
mov dword [esp + 0x1c], 1
mov ebx, dword [esp + 0x48]
and eax, 1
mov edi, dword [esp + 0x74]
mov eax, dword [esp + eax*4 + 0x90]
movsx ebx, word [ebx + ebx + 0x456d7e]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x3c], ebx
and eax, 2
sub dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
shl dword [esp + 0x1c], 0xc
mov edi, dword [eax + edi]
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x4c]
jmp 0x439480
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x44], edx
mov dword [esp + 0x30], edi
jmp 0x4397b3
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x44], edx
mov dword [esp + 0x30], eax
jmp 0x4397b3
mov eax, dword [esp + 0x1c]
sub ecx, edi
sar ecx, 5
mov edx, eax
sar edx, 0x1f
idiv ecx
add dword [esp + 0x40], eax
jmp 0x4397fb
mov edx, dword [esp + 0x38]
jmp 0x439777
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x48]
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x50], 0
movsx edi, word [edi + edi + 0x456d80]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x4c], edi
jmp 0x439480
sub edx, 1
mov ecx, dword [ebp + eax*4 - 8]
sub ecx, dword [ebp + eax*4]
cmp ebx, edx
mov dword [ebp + eax*4 - 8], ecx
mov eax, edx
jl 0x439900
mov eax, dword [ebp + ebx*4]
add dword [esp + 0x1c], 1
add eax, eax
sub dword [ebp + ebx*4 - 8], eax
add ebx, 1
cmp ebx, dword [esp + 0x5c]
jne 0x439692
mov ebx, dword [esp + 0x54]
mov ecx, dword [esp + 0x20]
mov ebx, dword [ebx]
test ecx, ecx
mov dword [esp + 0x38], ebx
js 0x439abd
mov edi, ebx
mov edx, dword [esp + 0x54]
movsx ebx, word [esp + 0x78]
mov ecx, edi
mov esi, dword [esp + 0x7c]
nop
lea esi, [esi]
movzx eax, cx
mov edi, ecx
sar edi, 0x10
imul eax, ebx
imul edi, ebx
imul ecx, esi
sar eax, 0x10
add eax, edi
add eax, dword [edx - 4]
sub edx, 4
add ecx, eax
cmp edx, dword [esp + 0x14]
jne 0x439960
mov dword [esp + 0x1c], ecx
mov edx, dword [esp + 0x1c]
test edx, edx
js 0x4399d9
mov ebx, dword [esp + 0x84]
lea edi, [esp + 0x98]
mov dword [esp + 0x50], 0
mov dword [esp + 0x18], edi
mov dword [esp + 0x34], 0
mov dword [esp + 0x48], 1
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x4c], ebx
mov edi, ebx
jmp 0x439480
mov edi, dword [esp + 0x38]
jmp 0x4394d9
mov edi, dword [esp + 0x58]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x100]
mov edi, dword [edi]
test eax, eax
mov word [ebx], 0
mov dword [esp + 0x38], edi
js 0x439b36
movsx ebx, word [esp + 0x78]
mov ecx, edi
mov edx, dword [esp + 0x58]
mov esi, dword [esp + 0x7c]
lea esi, [esi]
movzx eax, cx
mov edi, ecx
sar edi, 0x10
imul eax, ebx
imul edi, ebx
imul ecx, esi
sar eax, 0x10
add eax, edi
add eax, dword [edx - 4]
sub edx, 4
add ecx, eax
cmp edx, ebp
jne 0x439a10
mov dword [esp + 0x1c], ecx
mov ebx, dword [esp + 0x84]
mov dword [esp + 0x18], ebp
mov edi, dword [esp + 0x8c]
mov dword [esp + 0x50], 0
mov dword [esp + 0x34], 1
mov dword [esp + 0x48], 1
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x4c], edi
jmp 0x439480
mov ecx, dword [esp + 0x108]
mov eax, 0x8000
mov edx, eax
mov ebx, dword [esp + 0x100]
sar edx, 0x1f
add ecx, 1
idiv ecx
cmp dword [esp + 0x108], 1
mov edx, eax
mov word [ebx], ax
jle 0x439ab2
mov eax, 2
jmp 0x439aa3
movzx edx, word [ebx]
imul edx, eax
mov word [ebx + eax*2 - 2], dx
add eax, 1
cmp eax, ecx
jne 0x439aa0
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x1c], ebx
jmp 0x439988
mov edi, dword [esp + 0x58]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x100]
mov edi, dword [edi]
test eax, eax
mov word [ebx], 0
mov dword [esp + 0x38], edi
js 0x439b84
mov esi, dword [esp + 0x78]
mov edx, edi
movsx ebx, word [esp + 0x78]
mov ecx, dword [esp + 0x58]
sar esi, 0xf
add esi, 1
sar esi, 1
movzx eax, dx
mov edi, edx
sar edi, 0x10
imul eax, ebx
imul edi, ebx
imul edx, esi
sar eax, 0x10
add eax, edi
add eax, dword [ecx - 4]
sub ecx, 4
add edx, eax
cmp ecx, ebp
jne 0x439aff
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x34], 1
jmp 0x4393ea
mov dword [esp + 0x1c], edi
jmp 0x439a36
mov dword [esp + 0x1c], ebx
jmp 0x4393cb
sub edi, 1
mov ebx, dword [esp + 0x74]
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x104]
lea ebx, [edi + ebx]
mov edi, dword [esp + 0x24]
mov dword [esp + 0x80], ebx
sub edi, 2
mov dword [esp + 0x3c], edi
jmp 0x439361
mov ebx, dword [esp + 0x24]
sub ebx, 2
mov dword [esp + 0x3c], ebx
jmp 0x439361
mov dword [esp + 0x1c], edi
jmp 0x439b25