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

Disassembly:
sub esp, 0x58
push ebx
mov ebx, dword [esp + 0x6c]
mov eax, dword [ebx]
push edi
mov edi, dword [esp + 0x68]
mov ecx, dword [edi]
mov edx, eax
xor edx, ecx
or eax, ecx
mov ecx, dword [esp + 0x64]
shr edx, 1
and edx, 0x7f7f7f7f
sub eax, edx
mov dword [ecx], eax
add ecx, 4
mov dword [esp + 0x64], ecx
mov ecx, 2
cmp dword [esp + 0x80], ecx
jb 0x5b8fe1
sub dword [esp + 0x80], ecx
xor ecx, ecx
mov eax, 1
add dword [esp + 0x74], eax
add dword [esp + 0x78], eax
add dword [esp + 0x7c], eax
mov eax, dword [esp + 0x84]
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov ecx, dword [edi]
movzx edx, ch
mov dword [esp + 0x34], edx
push ebp
mov ebp, ecx
and ecx, 0xff
mov dword [esp + 0x3c], ecx
mov ecx, dword [edi + 4]
add edi, 4
movzx edx, ch
mov dword [esp + 0x44], edx
push esi
mov esi, ecx
and ecx, 0xff
mov dword [esp + 0x4c], ecx
mov ecx, dword [ebx]
mov edx, ecx
shr edx, 0x10
and edx, 0xff
mov dword [esp + 0x2c], edx
movzx edx, ch
and ecx, 0xff
mov dword [esp + 0x30], edx
add ebx, 4
mov dword [esp + 0x34], ecx
mov ecx, dword [ebx]
mov edx, ecx
shr edx, 0x10
and edx, 0xff
mov dword [esp + 0x20], edx
movzx edx, ch
add dword [esp + 0x74], 4
add edi, 4
mov dword [esp + 0x24], edx
mov edx, dword [edi]
and ecx, 0xff
add ebx, 4
mov dword [esp + 0x10], ebx
movzx ebx, dh
mov dword [esp + 0x28], ecx
mov ecx, edx
and edx, 0xff
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx]
add dword [esp + 0x10], 4
add edi, 4
shr ebp, 0x10
mov dword [esp + 0x14], edi
mov edi, edx
and ebp, 0xff
shr edi, 0x10
and edi, 0xff
sub ebp, edi
mov dword [esp + 0x54], ebx
movzx ebx, dh
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x3c]
sub ebp, ebx
shr esi, 0x10
shr ecx, 0x10
mov dword [esp + 0x60], ebx
and edx, 0xff
mov ebx, ebp
mov ebp, dword [esp + 0x40]
add eax, 0xc
and esi, 0xff
and ecx, 0xff
sub ebp, edx
mov dword [esp + 0x64], edx
mov edx, ebp
imul ebp, edx
mov edx, ebx
imul edx, ebx
add ebp, edx
mov edx, dword [esp + 0x1c]
mov ebx, edx
imul ebx, edx
add ebp, ebx
mov ebx, dword [esp + 0x4c]
sub ebx, dword [esp + 0x28]
mov dword [eax], ebp
mov ebp, ebx
imul ebp, ebx
mov edx, esi
sub edx, dword [esp + 0x20]
add eax, 0xc
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x48]
sub edx, dword [esp + 0x24]
mov ebx, edx
imul ebx, edx
mov edx, dword [esp + 0x1c]
add ebp, ebx
mov ebx, edx
imul ebx, edx
add ebp, ebx
mov ebx, dword [esp + 0x58]
sub ebx, dword [esp + 0x34]
mov edx, ecx
sub edx, dword [esp + 0x2c]
mov dword [eax - 8], ebp
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x54]
sub edx, dword [esp + 0x30]
mov ebp, ebx
imul ebp, ebx
mov ebx, edx
imul ebx, edx
mov edx, dword [esp + 0x1c]
add ebp, ebx
mov ebx, edx
imul ebx, edx
mov edx, dword [esp + 0x88]
add ebp, ebx
mov dword [eax - 4], ebp
add edx, 0xffffffff
mov dword [esp + 0x18], edx
je 0x5b8e31
lea esp, [esp]
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
movzx ebx, dh
mov ebp, edx
and edx, 0xff
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx]
mov dword [esp + 0x3c], ebx
mov ebx, edx
shr ebx, 0x10
and ebx, 0xff
mov dword [esp + 0x2c], ebx
sub esi, dword [esp + 0x2c]
movzx ebx, dh
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x48]
sub esi, ebx
and edx, 0xff
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x4c]
sub ebx, edx
mov dword [esp + 0x34], edx
mov edx, ebx
imul ebx, edx
mov edx, esi
imul edx, esi
add ebx, edx
mov edx, dword [esp + 0x1c]
mov esi, edx
imul esi, edx
add ebx, esi
mov esi, dword [esp + 0x58]
sub esi, dword [esp + 0x64]
mov dword [eax], ebx
mov ebx, esi
imul ebx, esi
mov edx, ecx
sub edx, edi
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x54]
sub edx, dword [esp + 0x60]
shr ebp, 0x10
mov esi, edx
imul esi, edx
mov edx, dword [esp + 0x1c]
add ebx, esi
mov esi, edx
imul esi, edx
add ebx, esi
mov esi, dword [esp + 0x40]
sub esi, dword [esp + 0x28]
and ebp, 0xff
mov edx, ebp
sub edx, dword [esp + 0x20]
mov dword [eax + 4], ebx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x3c]
sub edx, dword [esp + 0x24]
mov ebx, esi
imul ebx, esi
add dword [esp + 0x14], 4
add dword [esp + 0x10], 4
mov esi, edx
imul esi, edx
mov edx, dword [esp + 0x1c]
add ebx, esi
mov esi, edx
imul esi, edx
add ebx, esi
mov dword [eax + 8], ebx
add eax, 0xc
sub dword [esp + 0x18], 1
je 0x5b8e31
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
movzx ebx, dh
mov esi, edx
and edx, 0xff
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx]
mov dword [esp + 0x48], ebx
mov ebx, edx
shr ebx, 0x10
and ebx, 0xff
mov dword [esp + 0x20], ebx
sub ecx, dword [esp + 0x20]
movzx ebx, dh
and edx, 0xff
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x54]
sub ecx, ebx
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x58]
sub ebx, edx
mov dword [esp + 0x28], edx
mov edx, ebx
imul ebx, edx
mov edx, ecx
imul edx, ecx
mov ecx, dword [esp + 0x1c]
add ebx, edx
mov edx, ecx
imul edx, ecx
add ebx, edx
mov edx, dword [esp + 0x40]
sub edx, dword [esp + 0x34]
mov dword [eax], ebx
mov ecx, ebp
sub ecx, dword [esp + 0x2c]
mov ebx, edx
imul ebx, edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x3c]
sub ecx, dword [esp + 0x30]
shr esi, 0x10
mov edx, ecx
imul edx, ecx
mov ecx, dword [esp + 0x1c]
add ebx, edx
mov edx, ecx
imul edx, ecx
add ebx, edx
mov edx, dword [esp + 0x48]
sub edx, dword [esp + 0x60]
and esi, 0xff
add dword [esp + 0x14], 4
add dword [esp + 0x10], 4
mov ecx, esi
sub ecx, edi
mov edi, dword [esp + 0x4c]
sub edi, dword [esp + 0x64]
mov dword [eax + 4], ebx
mov ebx, edi
imul ebx, edi
mov edi, edx
imul edi, edx
mov edx, ecx
imul edx, ecx
add ebx, edi
add ebx, edx
mov dword [eax + 8], ebx
add eax, 0xc
sub dword [esp + 0x18], 1
je 0x5b8e31
mov edi, dword [esp + 0x14]
mov edx, dword [edi]
movzx ebx, dh
mov ecx, edx
and edx, 0xff
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx]
mov dword [esp + 0x54], ebx
movzx ebx, dh
add edi, 4
mov dword [esp + 0x14], edi
mov edi, edx
mov dword [esp + 0x60], ebx
and edx, 0xff
shr edi, 0x10
and edi, 0xff
sub ebp, edi
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x3c]
sub ebp, ebx
mov ebx, ebp
mov ebp, dword [esp + 0x40]
sub ebp, edx
mov dword [esp + 0x64], edx
mov edx, ebp
imul ebp, edx
mov edx, ebx
imul edx, ebx
add ebp, edx
mov edx, dword [esp + 0x1c]
mov ebx, edx
imul ebx, edx
add ebp, ebx
mov ebx, dword [esp + 0x4c]
sub ebx, dword [esp + 0x28]
mov dword [eax], ebp
mov ebp, ebx
imul ebp, ebx
mov edx, esi
sub edx, dword [esp + 0x20]
shr ecx, 0x10
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x48]
sub edx, dword [esp + 0x24]
and ecx, 0xff
mov ebx, edx
imul ebx, edx
mov edx, dword [esp + 0x1c]
add ebp, ebx
mov ebx, edx
imul ebx, edx
add ebp, ebx
mov ebx, dword [esp + 0x58]
sub ebx, dword [esp + 0x34]
mov edx, ecx
sub edx, dword [esp + 0x2c]
mov dword [eax + 4], ebp
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x54]
sub edx, dword [esp + 0x30]
mov ebp, ebx
imul ebp, ebx
add dword [esp + 0x10], 4
mov ebx, edx
imul ebx, edx
mov edx, dword [esp + 0x1c]
add ebp, ebx
mov ebx, edx
imul ebx, edx
add ebp, ebx
mov dword [eax + 8], ebp
add eax, 0xc
sub dword [esp + 0x18], 1
jne 0x5b8b60
xor ecx, ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x88]
cmp eax, ecx
jbe 0x5b8fbb
mov dword [esp + 0x88], eax
mov edx, dword [esp + 0x80]
mov esi, dword [esp + 0x7c]
movzx ecx, byte [esi]
movzx eax, byte [edx]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x84]
movzx edi, byte [ecx]
add eax, edi
add ecx, 1
add edx, 1
add esi, 1
lea edi, [eax*8 - 0x140]
test edi, edi
mov dword [esp + 0x84], ecx
mov dword [esp + 0x80], edx
mov dword [esp + 0x7c], esi
jg 0x5b8eaf
mov edx, dword [esp + 0x74]
mov eax, dword [edx]
mov ecx, dword [esp + 0x6c]
mov dword [ecx], eax
mov eax, dword [esp + 0x8c]
jmp 0x5b8f8e
mov eax, dword [esp + 0x8c]
mov ecx, dword [eax + 0x18]
mov edx, dword [eax + 0x20]
add ecx, dword [eax + 0xc]
add edx, dword [eax + 0x14]
mov esi, dword [eax + 0x1c]
add esi, dword [eax + 0x10]
add ecx, dword [eax]
add edx, dword [eax + 8]
add esi, dword [eax + 4]
cmp ecx, edx
jge 0x5b8ee7
mov edx, dword [esp + 0x70]
cmp ecx, esi
mov ecx, dword [esp + 0x78]
jge 0x5b8efa
mov edx, dword [edx]
mov ecx, dword [ecx + 8]
jmp 0x5b8f00
mov ecx, dword [esp + 0x78]
cmp edx, esi
mov edx, dword [esp + 0x70]
jge 0x5b8efa
mov edx, dword [edx + 8]
mov ecx, dword [ecx]
jmp 0x5b8f00
mov ecx, dword [ecx + 4]
mov edx, dword [edx + 4]
mov esi, ecx
xor esi, edx
shr esi, 1
and esi, 0x7f7f7f7f
or ecx, edx
sub ecx, esi
cmp edi, 0x100
jge 0x5b8f88
mov edx, dword [esp + 0x74]
mov eax, dword [edx]
movzx ebx, ah
mov esi, eax
and eax, 0xff
mov ebp, eax
mov eax, ecx
shr eax, 0x10
and eax, 0xff
movzx edx, ch
shr esi, 0x10
and esi, 0xff
sub eax, esi
imul eax, edi
and ecx, 0xff
sub edx, ebx
imul edx, edi
sub ecx, ebp
imul ecx, edi
add eax, 0x80
shr eax, 8
add eax, esi
add edx, 0x80
shr edx, 8
add ecx, 0x80
shl eax, 8
add edx, ebx
shr ecx, 8
add eax, edx
add ecx, ebp
shl eax, 8
add eax, ecx
mov ecx, eax
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x6c]
mov dword [edx], ecx
mov ecx, 4
add dword [esp + 0x6c], ecx
add dword [esp + 0x70], ecx
add dword [esp + 0x74], ecx
add dword [esp + 0x78], ecx
add eax, 0xc
sub dword [esp + 0x88], 1
mov dword [esp + 0x8c], eax
jne 0x5b8e51
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 4]
mov edx, dword [esp + 0x78]
mov eax, dword [edx + 4]
mov edx, eax
xor edx, ecx
shr edx, 1
or eax, ecx
mov ecx, dword [esp + 0x6c]
and edx, 0x7f7f7f7f
sub eax, edx
pop esi
mov dword [ecx], eax
pop ebp
pop edi
pop ebx
add esp, 0x58
ret