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

Disassembly:
sub esp, 0x48
mov eax, dword [esp + 0x84]
push ebx
push ebp
or edx, 0xffffffff
push esi
push edi
test eax, eax
mov dword [esp + 0x10], 0
mov ecx, 1
jge 0x43f811
neg eax
mov dword [esp + 0x14], edx
lea esi, [eax - 1]
mov dword [esp + 0x10], esi
jmp 0x43f815
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 0x98]
test esi, esi
jge 0x43f840
neg esi
mov dword [esp + 0x94], edx
mov edi, dword [esp + 0x10]
lea edx, [esi - 1]
imul edx, dword [esp + 0x90]
add edi, edx
mov dword [esp + 0x10], edi
jmp 0x43f847
mov dword [esp + 0x94], ecx
mov edi, dword [esp + 0x80]
test edi, edi
jge 0x43f85b
mov edi, eax
mov dword [esp + 0x80], edi
mov ebx, dword [esp + 0x84]
test ebx, ebx
jge 0x43f86f
mov ebx, esi
mov dword [esp + 0x84], ebx
shl eax, 0x10
cdq
idiv edi
mov edi, eax
mov eax, esi
shl eax, 0x10
cdq
idiv ebx
test edi, 0xffff0000
mov ebx, eax
je 0x43f890
mov esi, edi
sar esi, 0x10
jmp 0x43f892
mov esi, ecx
test ebx, 0xffff0000
je 0x43f89f
mov ecx, ebx
sar ecx, 0x10
mov ebp, ecx
mov eax, 0x10000
imul ebp, esi
cdq
idiv ebp
mov edx, dword [esp + 0x14]
imul ecx, edx
imul edi, edx
mov edx, dword [esp + 0x70]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x4c], edi
mov edi, 1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x94]
imul esi, eax
imul ebx, eax
mov eax, 0x18
mov dword [esp + 0x1c], esi
sub eax, ecx
mov esi, dword [esp + 0x78]
mov dword [esp + 0x44], eax
mov eax, 0x18
sub eax, edx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x40], eax
mov eax, 0x18
sub eax, esi
mov dword [esp + 0x3c], eax
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x6c]
dec eax
shl eax, cl
mov ecx, edx
mov edx, 1
shl edi, cl
mov ecx, dword [esp + 0x74]
dec edi
shl edi, cl
mov ecx, esi
shl edx, cl
mov ecx, dword [esp + 0x7c]
or eax, edi
xor edi, edi
mov dword [esp + 0x70], edi
dec edx
shl edx, cl
or eax, edx
not eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x84]
cmp eax, edi
jle 0x43fb70
mov edx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x80]
mov esi, ebx
mov dword [esp + 0x28], edi
neg esi
mov dword [esp + 0x54], esi
mov dword [esp + 0x24], edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x70]
test edi, edi
jl 0x43f97a
mov eax, edi
test ebx, ebx
je 0x43f98c
xor ecx, ecx
test ebx, ebx
setle cl
dec ecx
and ecx, 2
dec ecx
jmp 0x43f98e
xor ecx, ecx
sar eax, 0x10
imul eax, ecx
imul eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x68], 0
add eax, ecx
test ebp, ebp
mov dword [esp + 0x30], eax
jle 0x43fb43
mov ebx, edx
mov dword [esp + 0x20], ebp
mov dword [esp + 0x5c], ebx
mov ecx, dword [esp + 0x60]
mov esi, ebx
mov ebx, ecx
xor edx, edx
lea edi, [esp + 0x84]
mov dword [esp + 0x84], edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
xor ebp, ebp
and ecx, 3
xor eax, eax
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x1c]
xor ecx, ecx
cmp esi, ecx
mov dword [esp + 0x78], ecx
je 0x43faa1
mov edi, dword [esp + 0x94]
mov dword [esp + 0x98], ecx
imul edi, dword [esp + 0x90]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x34], edi
xor esi, esi
test ecx, ecx
je 0x43fa74
mov ecx, dword [esp + 0x68]
mov ebx, dword [esp + 0x98]
mov edi, dword [esp + 0x30]
sar ecx, 0x10
add ecx, ebx
add ecx, edi
mov edi, dword [esp + 0x88]
add edi, ecx
mov ebx, dword [esp + 0x8c]
xor ecx, ecx
mov cl, byte [edi + esi]
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 + 0x14]
add esi, ecx
mov ecx, dword [esp + 0x18]
add edx, ebx
cmp esi, ecx
jne 0x43fa3d
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x78]
mov ebx, dword [esp + 0x94]
add esi, ebx
mov ebx, dword [esp + 0x98]
add ebx, edi
mov dword [esp + 0x78], esi
mov dword [esp + 0x98], ebx
mov ebx, dword [esp + 0x1c]
cmp esi, ebx
jne 0x43fa18
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
imul edx, esi
imul eax, esi
shr edx, cl
imul ebp, esi
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x48]
shl edx, cl
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x5c]
shr eax, cl
mov ecx, dword [esp + 0x74]
mov edi, ebx
shl eax, cl
mov ecx, dword [esp + 0x44]
shr ebp, cl
mov ecx, dword [esp + 0x6c]
or edx, eax
mov eax, dword [esp + 0x84]
and eax, esi
lea esi, [esp + 0x84]
shl ebp, cl
or edx, ebp
or edx, eax
mov eax, dword [esp + 0x60]
mov ecx, eax
mov dword [esp + 0x84], edx
mov edx, ecx
add ebx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x4c]
mov ecx, edx
and ecx, 3
mov dword [esp + 0x5c], ebx
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x68]
add ecx, eax
mov eax, dword [esp + 0x20]
dec eax
mov dword [esp + 0x68], ecx
mov dword [esp + 0x20], eax
jne 0x43f9c0
mov ebp, dword [esp + 0x80]
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x64]
add eax, ebx
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x2c]
add edx, ecx
add edi, esi
dec eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], eax
jne 0x43f970
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret