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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x5c
mov eax, dword [ebp + 0x10]
push ebx
push esi
push edi
mov edi, ecx
add eax, 0xfffffffb
mov dword [esp + 0x10], edi
mov ebx, edx
mov dword [esp + 0x28], ebx
mov esi, dword [edi + 0x80]
cmp eax, 3
ja case.default.0x598759
jmp dword [eax*4 + 0x598b48]
push 0xcf1bbcdc
push 0xbb000000
push dword [ebx + 4]
push dword [ebx]
call fcn.005e0850
mov ecx, 0x40
sub ecx, esi
call fcn.005e2c50
jmp 0x5987b5
push 0xcf1bbcdc
push 0xbf9b0000
jmp 0x59876a
push 0xcf1bbcdc
push 0xbfa56300
jmp 0x59876a
push 0xcf1bbcdc
push 0xb7a56463
jmp 0x59876a
imul eax, dword [ebx], 0x9e3779b1
mov ecx, 0x20
sub ecx, esi
shr eax, cl
mov ecx, dword [edi + 0x20]
mov esi, dword [ecx + eax*4]
lea eax, [ecx + eax*4]
mov ecx, dword [edi + 4]
mov edi, 1
mov dword [esp + 0x58], eax
mov edx, edi
mov eax, ebx
mov dword [esp + 0x34], ecx
mov ebx, dword [esp + 0x10]
sub eax, ecx
mov dword [esp + 0x20], eax
mov ecx, dword [ebx + 0x78]
shl edx, cl
mov ecx, dword [ebx + 0x10]
sub eax, ecx
cmp eax, edx
jbe 0x5987f2
mov eax, dword [esp + 0x20]
sub eax, edx
jmp 0x5987f4
mov eax, ecx
cmp dword [ebx + 0x14], 0
mov edx, dword [ebx + 0x28]
cmovne eax, ecx
mov dword [esp + 0x24], edx
mov ecx, dword [ebx + 0x7c]
mov dword [esp + 0x30], eax
dec ecx
mov eax, edi
shl eax, cl
mov ecx, dword [esp + 0x20]
dec eax
mov dword [esp + 0x18], eax
cmp eax, ecx
jb 0x59881f
xor ecx, ecx
jmp 0x598821
sub ecx, eax
mov ebx, dword [esp + 0x30]
cmp ecx, ebx
mov dword [esp + 0x3c], ecx
cmova ebx, ecx
mov ecx, dword [esp + 0x10]
and eax, esi
mov ecx, dword [ecx + 0x84]
lea eax, [edx + eax*8]
shl edi, cl
xor edx, edx
mov dword [esp + 0x1c], edi
cmp esi, ebx
jbe 0x59888f
mov ecx, dword [esp + 0x18]
lea ecx, [ecx]
cmp dword [eax + 4], 1
jne 0x598878
cmp edi, 1
jbe 0x598878
mov dword [eax + 4], edx
dec edi
mov edx, esi
mov esi, dword [eax]
mov eax, ecx
mov ecx, dword [esp + 0x24]
and eax, esi
lea eax, [ecx + eax*8]
mov ecx, dword [esp + 0x18]
cmp esi, ebx
ja 0x598850
jmp 0x59888f
cmp esi, ebx
jbe 0x59888f
cmp dword [eax + 4], 1
jne 0x59888f
mov dword [eax + 4], 0
mov dword [eax], 0
test edx, edx
je 0x5988bc
push dword [ebp + 0x14]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
and eax, edx
push ebx
push edi
push dword [ebp + 8]
mov esi, dword [ecx + eax*8 + 4]
mov ecx, dword [esp + 0x20]
call fcn.00598290
add esp, 0x10
inc edi
mov edx, esi
test esi, esi
jne 0x598893
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x5c], ecx
add ecx, eax
add eax, dword [esp + 0x34]
mov dword [esp + 0x60], eax
mov eax, edx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x20]
and eax, ecx
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x14], 0
lea eax, [esi + eax*8]
mov dword [esp + 0xc], eax
add eax, 4
mov dword [esp + 0x2c], eax
lea eax, [ecx + 9]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x58]
mov ebx, dword [eax]
mov dword [eax], ecx
mov ecx, dword [esp + 0x28]
test edi, edi
je 0x598aec
dec edi
mov dword [esp + 0x1c], edi
cmp ebx, dword [esp + 0x30]
jbe 0x598aed
and edx, ebx
lea eax, [esi + edx*8]
mov edx, dword [esp + 0x54]
cmp dword [esp + 0x50], edx
mov esi, edx
mov dword [esp + 0x58], eax
cmovb esi, dword [esp + 0x50]
cmp dword [ebp + 0x14], 1
jne 0x5989d9
lea eax, [esi + ebx]
cmp eax, dword [esp + 0x4c]
jae 0x5989d9
mov eax, dword [esp + 0x5c]
add eax, ebx
mov dword [esp + 0x38], eax
lea edi, [eax + esi]
lea eax, [esi + ecx]
mov edx, edi
mov ecx, dword [ebp + 8]
mov dword [esp + 0x48], eax
sub eax, edi
add eax, dword [esp + 0x44]
cmp eax, ecx
cmovb ecx, eax
push ecx
mov ecx, dword [esp + 0x4c]
call fcn.00577530
add esp, 4
mov dword [esp + 0x64], eax
lea ecx, [eax + edi]
cmp ecx, dword [esp + 0x44]
jne 0x5989be
mov ecx, dword [esp + 0x48]
push dword [ebp + 8]
mov edx, dword [esp + 0x64]
add ecx, eax
call fcn.00577530
add esp, 4
add eax, dword [esp + 0x64]
mov edi, dword [esp + 0x1c]
add esi, eax
lea eax, [esi + ebx]
cmp eax, dword [esp + 0x4c]
jb 0x5989f5
mov eax, dword [esp + 0x34]
add eax, ebx
mov dword [esp + 0x38], eax
jmp 0x5989f5
mov eax, dword [esp + 0x34]
add ecx, esi
push dword [ebp + 8]
add eax, ebx
mov dword [esp + 0x3c], eax
lea edx, [eax + esi]
call fcn.00577530
add esp, 4
add esi, eax
cmp esi, dword [esp + 0x14]
jbe 0x598a84
mov eax, dword [esp + 0x40]
sub eax, ebx
cmp esi, eax
jbe 0x598a10
lea eax, [esi + ebx]
mov dword [esp + 0x40], eax
mov edx, dword [esp + 0x20]
mov ecx, 0
sub edx, ebx
mov dword [esp + 0x48], 0
lea eax, [edx + 1]
bsr eax, eax
mov dword [esp + 0x48], eax
cmovne ecx, eax
mov dword [esp + 0x48], 0
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
inc eax
bsr eax, eax
mov dword [esp + 0x48], eax
mov eax, 0
cmovne eax, dword [esp + 0x48]
sub ecx, eax
mov eax, esi
sub eax, dword [esp + 0x14]
shl eax, 2
cmp eax, ecx
jle 0x598a6a
mov ecx, dword [ebp + 0xc]
lea eax, [edx + 2]
mov dword [esp + 0x14], esi
mov dword [ecx], eax
mov ecx, dword [esp + 0x28]
lea eax, [esi + ecx]
cmp eax, dword [ebp + 8]
jne 0x598a88
cmp dword [ebp + 0x14], 2
mov eax, dword [esp + 0xc]
jne 0x598af1
xor edi, edi
jmp 0x598af1
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
mov al, byte [eax + esi]
cmp al, byte [esi + ecx]
jae 0x598ab1
mov eax, dword [esp + 0xc]
mov dword [esp + 0x50], esi
mov dword [eax], ebx
cmp ebx, dword [esp + 0x3c]
jbe 0x598adc
mov eax, dword [esp + 0x58]
add eax, 4
mov dword [esp + 0xc], eax
jmp 0x598ac9
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x54], esi
mov dword [edx], ebx
cmp ebx, dword [esp + 0x3c]
jbe 0x598ae2
mov eax, dword [esp + 0x58]
mov dword [esp + 0x2c], eax
mov ebx, dword [eax]
test edi, edi
je 0x598aec
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x24]
jmp 0x598931
lea eax, [esp + 0x64]
jmp 0x598af1
lea eax, [esp + 0x64]
mov dword [esp + 0x2c], eax
jmp 0x598aed
dec edi
mov eax, dword [esp + 0xc]
cmp dword [ebp + 0x14], 2
mov edx, dword [esp + 0x2c]
mov dword [edx], 0
mov dword [eax], 0
jne 0x598b2c
test edi, edi
je 0x598b2c
push ecx
push dword [ebp + 0x10]
mov edx, ecx
mov ecx, dword [esp + 0x18]
push edi
push dword [esp + 0x20]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00598490
add esp, 0x18
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x40]
pop edi
add ecx, 0xfffffff8
pop esi
mov dword [eax + 0x18], ecx
mov eax, dword [esp + 0xc]
pop ebx
mov esp, ebp
pop ebp
ret