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

Disassembly:
sub esp, 0x44
mov eax, dword [esp + 0x70]
push ebx
push ebp
or edx, 0xffffffff
push esi
push edi
test eax, eax
mov dword [esp + 0x10], 0
mov ecx, 1
jge 0x43fbae
neg eax
mov dword [esp + 0x14], edx
lea esi, [eax - 1]
mov dword [esp + 0x10], esi
jmp 0x43fbb2
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 0x84]
test esi, esi
jge 0x43fbda
neg esi
mov dword [esp + 0x80], edx
mov edi, dword [esp + 0x10]
lea edx, [esi - 1]
imul edx, dword [esp + 0x7c]
add edi, edx
mov dword [esp + 0x10], edi
jmp 0x43fbe1
mov dword [esp + 0x80], ecx
mov edi, dword [esp + 0x6c]
test edi, edi
jge 0x43fbef
mov edi, eax
mov dword [esp + 0x6c], edi
mov ebx, dword [esp + 0x70]
test ebx, ebx
jge 0x43fbfd
mov ebx, esi
mov dword [esp + 0x70], ebx
shl eax, 0x10
cdq
idiv edi
mov edi, eax
mov eax, esi
shl eax, 0x10
cdq
idiv ebx
test edi, 0xffff0000
mov ebp, eax
je 0x43fc1e
mov esi, edi
sar esi, 0x10
jmp 0x43fc20
mov esi, ecx
test ebp, 0xffff0000
je 0x43fc2d
mov ecx, ebp
sar ecx, 0x10
mov ebx, ecx
mov eax, 0x10000
imul ebx, esi
cdq
idiv ebx
mov edx, dword [esp + 0x80]
imul ebp, edx
imul esi, edx
xor edx, edx
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x20], esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x14]
imul ecx, eax
imul edi, eax
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x64]
mov eax, 1
mov dword [esp + 0x48], edi
shl eax, cl
mov ecx, dword [esp + 0x68]
dec eax
shl eax, cl
mov dword [esp + 0x40], eax
not eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x70]
cmp eax, edx
jle 0x43fe70
mov esi, dword [esp + 0x58]
mov ebx, dword [esp + 0x5c]
mov edi, ebp
mov dword [esp + 0x2c], edx
neg edi
mov dword [esp + 0x50], edi
mov dword [esp + 0x28], esi
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
test edx, edx
jl 0x43fcb9
mov eax, edx
test ebp, ebp
je 0x43fccb
xor ecx, ecx
test ebp, ebp
setle cl
dec ecx
and ecx, 2
dec ecx
jmp 0x43fccd
xor ecx, ecx
sar eax, 0x10
imul eax, ecx
imul eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x10]
add eax, ecx
xor ecx, ecx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x6c]
cmp eax, ecx
mov dword [esp + 0x58], ecx
jle 0x43fe47
mov dword [esp + 0x68], esi
mov dword [esp + 0x24], eax
jmp 0x43fd00
xor ecx, ecx
mov esi, dword [esp + 0x68]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x70], ecx
mov ecx, ebx
mov edx, ecx
lea edi, [esp + 0x70]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
xor ebp, ebp
and ecx, 3
xor eax, eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x20]
xor edi, edi
cmp ecx, edi
mov dword [esp + 0x84], edi
je 0x43fdc9
mov ecx, dword [esp + 0x80]
imul ecx, dword [esp + 0x7c]
mov dword [esp + 0x38], ecx
mov esi, dword [esp + 0x1c]
xor edx, edx
test esi, esi
je 0x43fda8
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x34]
sar ecx, 0x10
add ecx, edi
add ecx, esi
mov esi, dword [esp + 0x74]
add esi, ecx
mov ebx, dword [esp + 0x78]
xor ecx, ecx
mov cl, byte [esi + edx]
lea ebx, [ebx + ecx*2]
add ecx, ebx
xor ebx, ebx
mov bl, byte [ecx + 2]
add ebp, ebx
xor ebx, ebx
mov bl, byte [ecx + 1]
add eax, ebx
xor ebx, ebx
mov bl, byte [ecx]
mov ecx, dword [esp + 0x64]
add ecx, ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x1c]
add edx, ebx
cmp edx, ecx
jne 0x43fd68
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x80]
mov esi, dword [esp + 0x84]
add esi, edx
mov edx, dword [esp + 0x20]
add edi, ecx
cmp esi, edx
mov dword [esp + 0x84], esi
jne 0x43fd49
mov ecx, dword [esp + 0x3c]
imul ebp, ecx
test ebp, ebp
jne 0x43fde6
imul eax, ecx
test eax, eax
jne 0x43fde6
mov eax, dword [esp + 0x64]
imul eax, ecx
test eax, eax
je 0x43fdea
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x70]
mov esi, dword [esp + 0x44]
and ecx, esi
lea esi, [esp + 0x70]
or ecx, eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x70], ecx
mov ecx, ebx
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
add eax, ebx
and ecx, 3
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x48]
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x58]
add ecx, eax
mov eax, dword [esp + 0x24]
dec eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x24], eax
jne 0x43fcfe
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x4c]
mov edi, dword [esp + 0x50]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x60]
add eax, ebp
add esi, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x30]
add edx, edi
dec eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], eax
jne 0x43fcaf
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret