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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, 1
mov eax, dword [edi + 0x88]
mov ecx, dword [edi + 0x7c]
cmp eax, 5
je 0x5990f2
add eax, 0xfffffffa
cmp eax, esi
mov eax, dword [edi + 0x28]
ja 0x598f24
mov edx, dword [ebp + 0xc]
mov ebx, edx
mov dword [esp + 0x28], eax
mov eax, esi
shl eax, cl
mov ecx, dword [edi + 0x78]
mov dword [esp + 0x14], eax
dec eax
mov dword [esp + 0x40], eax
mov eax, dword [edi + 4]
sub ebx, eax
mov dword [esp + 0x20], eax
mov eax, esi
shl eax, cl
mov dword [esp + 0x30], eax
mov eax, ebx
sub eax, dword [edi + 0x10]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x3c], ebx
cmp eax, ecx
jbe 0x598d88
mov eax, ebx
sub eax, ecx
mov ecx, dword [edi + 0x10]
jmp 0x598d8d
mov ecx, dword [edi + 0x10]
mov eax, ecx
cmp dword [edi + 0x14], 0
cmovne eax, ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x2c], eax
cmp ebx, ecx
jbe 0x598daa
mov eax, ebx
sub eax, ecx
mov dword [esp + 0x24], eax
jmp 0x598db2
mov dword [esp + 0x24], 0
mov eax, dword [edi + 0x20]
mov ebx, 3
mov ecx, dword [edi + 0x84]
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x80]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
dec eax
shl esi, cl
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x38], eax
mov eax, edx
sub eax, ecx
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0x18]
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], 0x40
cmp eax, dword [esp + 0x14]
jae 0x598e6e
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x34], eax
lea esi, [edi + ecx]
jmp 0x598e20
push 0xcf1bbcdc
push 0xbf9b0000
push dword [esi + 4]
push dword [esi]
call fcn.005e0820
mov ecx, dword [esp + 0x34]
call fcn.005e2c20
mov ecx, dword [esp + 0x1c]
lea esi, [esi + 1]
lea edx, [ecx + eax*4]
mov ecx, edi
and ecx, dword [esp + 0x38]
mov eax, dword [edx]
mov dword [ebx + ecx*4], eax
mov eax, dword [esp + 0x14]
mov dword [edx], edi
inc edi
cmp edi, eax
jb 0x598e20
mov esi, dword [esp + 0xc]
mov ebx, 3
mov edi, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
jmp 0x598e72
mov eax, dword [esp + 0x14]
push 0xcf1bbcdc
push 0xbf9b0000
mov dword [edi + 0x18], eax
push dword [edx + 4]
push dword [edx]
call fcn.005e0820
mov ecx, dword [esp + 0x10]
sub ecx, dword [esp + 0x18]
call fcn.005e2c20
mov ecx, dword [esp + 0x1c]
mov edi, dword [ecx + eax*4]
cmp edi, dword [esp + 0x2c]
sbb ecx, ecx
xor eax, eax
inc ecx
cmp eax, esi
sbb eax, eax
neg eax
test eax, ecx
je 0x5992bf
mov edx, dword [esp + 0x20]
mov ecx, dword [ebp + 0xc]
add edx, edi
mov al, byte [edx + ebx]
cmp al, byte [ebx + ecx]
jne 0x598ef0
push dword [ebp + 0x10]
call fcn.00577530
add esp, 4
cmp eax, ebx
jbe 0x598ef0
mov ecx, dword [esp + 0x3c]
mov ebx, eax
mov edx, dword [ebp + 0x14]
sub ecx, edi
add eax, dword [ebp + 0xc]
add ecx, 2
mov dword [edx], ecx
cmp eax, dword [ebp + 0x10]
je 0x5992bf
cmp edi, dword [esp + 0x24]
jbe 0x5992bf
mov eax, dword [esp + 0x40]
dec esi
mov ecx, dword [esp + 0x28]
and eax, edi
mov edi, dword [ecx + eax*4]
cmp edi, dword [esp + 0x2c]
sbb edx, edx
xor eax, eax
inc edx
cmp eax, esi
sbb ecx, ecx
neg ecx
test ecx, edx
jne 0x598eb4
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 0xc]
mov edx, ebx
mov dword [esp + 0x1c], eax
mov eax, 1
shl eax, cl
mov ecx, dword [edi + 0x78]
mov dword [esp + 0x2c], eax
dec eax
mov dword [esp + 0x34], eax
mov eax, dword [edi + 4]
sub edx, eax
mov dword [esp + 0x14], eax
mov eax, esi
shl eax, cl
mov dword [esp + 0x40], eax
mov eax, edx
sub eax, dword [edi + 0x10]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x38], edx
cmp eax, ecx
jbe 0x598f6b
mov eax, edx
sub eax, ecx
mov ecx, dword [edi + 0x10]
jmp 0x598f70
mov ecx, dword [edi + 0x10]
mov eax, ecx
cmp dword [edi + 0x14], 0
cmovne eax, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x18], eax
cmp edx, ecx
jbe 0x598f8d
mov eax, edx
sub eax, ecx
mov dword [esp + 0x20], eax
jmp 0x598f95
mov dword [esp + 0x20], 0
mov eax, dword [edi + 0x20]
mov edx, 3
mov ecx, dword [edi + 0x84]
mov dword [esp + 0x24], eax
mov eax, dword [edi + 0x80]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x2c]
dec eax
shl esi, cl
mov dword [esp + 0x40], eax
mov eax, ebx
sub eax, dword [esp + 0x14]
mov ebx, dword [edi + 0x18]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], eax
cmp ebx, eax
jae 0x59902c
mov edi, dword [esp + 0x14]
mov ecx, 0x20
sub ecx, dword [esp + 0x28]
mov dword [esp + 0x3c], ecx
jmp 0x598ff0
imul eax, dword [ebx + edi], 0x9e3779b1
mov esi, dword [esp + 0x1c]
shr eax, cl
mov ecx, dword [esp + 0x24]
lea edx, [ecx + eax*4]
mov ecx, ebx
and ecx, dword [esp + 0x40]
mov eax, dword [edx]
mov dword [esi + ecx*4], eax
mov ecx, dword [esp + 0x3c]
mov dword [edx], ebx
inc ebx
cmp ebx, dword [esp + 0x2c]
jb 0x598ff0
mov esi, dword [esp + 0xc]
mov edx, 3
mov edi, dword [ebp + 8]
mov eax, dword [esp + 0x2c]
mov dword [edi + 0x18], eax
mov ecx, 0x20
mov eax, dword [ebp + 0xc]
sub ecx, dword [esp + 0x28]
imul eax, dword [eax], 0x9e3779b1
shr eax, cl
mov ecx, dword [esp + 0x24]
mov edi, dword [ecx + eax*4]
cmp edi, dword [esp + 0x18]
sbb ecx, ecx
xor eax, eax
inc ecx
cmp eax, esi
sbb eax, eax
neg eax
test eax, ecx
jne 0x599074
mov ebx, 3
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
mov ecx, dword [ebp + 0xc]
add ebx, edi
mov al, byte [ebx + edx]
cmp al, byte [edx + ecx]
jne 0x5990bc
push dword [ebp + 0x10]
mov edx, ebx
call fcn.00577530
mov ebx, dword [esp + 0x14]
add esp, 4
cmp eax, ebx
jbe 0x5990c0
mov ecx, dword [esp + 0x38]
mov ebx, eax
mov edx, dword [ebp + 0x14]
sub ecx, edi
add eax, dword [ebp + 0xc]
add ecx, 2
mov dword [esp + 0x10], ebx
mov dword [edx], ecx
cmp eax, dword [ebp + 0x10]
je 0x5992bf
jmp 0x5990c0
mov ebx, dword [esp + 0x10]
cmp edi, dword [esp + 0x20]
jbe 0x5992bf
and edi, dword [esp + 0x34]
dec esi
mov eax, dword [esp + 0x1c]
mov edi, dword [eax + edi*4]
cmp edi, dword [esp + 0x18]
sbb edx, edx
xor eax, eax
inc edx
cmp eax, esi
sbb ecx, ecx
neg ecx
test ecx, edx
jne 0x599070
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0x28]
mov edx, dword [ebp + 0xc]
mov ebx, edx
mov dword [esp + 0x18], eax
mov eax, 1
shl eax, cl
mov ecx, dword [edi + 0x78]
mov dword [esp + 0x2c], eax
dec eax
mov dword [esp + 0x44], eax
mov eax, dword [edi + 4]
sub ebx, eax
mov dword [esp + 0x20], eax
mov eax, esi
shl eax, cl
mov dword [esp + 0x40], eax
mov eax, ebx
sub eax, dword [edi + 0x10]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x34], ebx
cmp eax, ecx
jbe 0x59913c
mov eax, ebx
sub eax, ecx
mov ecx, dword [edi + 0x10]
jmp 0x599141
mov ecx, dword [edi + 0x10]
mov eax, ecx
cmp dword [edi + 0x14], 0
cmovne eax, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x30], eax
cmp ebx, ecx
jbe 0x59915e
mov eax, ebx
sub eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x599166
mov dword [esp + 0x1c], 0
mov eax, dword [edi + 0x20]
mov ebx, 3
mov ecx, dword [edi + 0x84]
mov dword [esp + 0x24], eax
mov eax, dword [edi + 0x80]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x2c]
dec eax
shl esi, cl
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x38], eax
mov eax, edx
sub eax, ecx
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0x18]
mov dword [esp + 0x40], eax
mov dword [esp + 0x10], 0x40
cmp eax, dword [esp + 0x14]
jae 0x59921e
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
lea esi, [edi + ecx]
lea esp, [esp]
push 0xcf1bbcdc
push 0xbb000000
push dword [esi + 4]
push dword [esi]
call fcn.005e0820
mov ecx, dword [esp + 0x3c]
call fcn.005e2c20
mov ecx, dword [esp + 0x24]
lea esi, [esi + 1]
lea edx, [ecx + eax*4]
mov ecx, edi
and ecx, dword [esp + 0x38]
mov eax, dword [edx]
mov dword [ebx + ecx*4], eax
mov eax, dword [esp + 0x14]
mov dword [edx], edi
inc edi
cmp edi, eax
jb 0x5991d0
mov esi, dword [esp + 0xc]
mov ebx, 3
mov edi, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
jmp 0x599222
mov eax, dword [esp + 0x14]
push 0xcf1bbcdc
mov dword [edi + 0x18], eax
mov edi, dword [esp + 0x14]
sub edi, dword [esp + 0x2c]
push 0xbb000000
push dword [edx + 4]
push dword [edx]
call fcn.005e0820
mov ecx, edi
call fcn.005e2c20
mov ecx, dword [esp + 0x24]
mov edi, dword [ecx + eax*4]
cmp edi, dword [esp + 0x30]
sbb ecx, ecx
xor eax, eax
inc ecx
cmp eax, esi
sbb eax, eax
neg eax
test eax, ecx
je 0x5992bf
mov edx, dword [esp + 0x20]
mov ecx, dword [ebp + 0xc]
add edx, edi
mov al, byte [edx + ebx]
cmp al, byte [ebx + ecx]
jne 0x59929a
push dword [ebp + 0x10]
call fcn.00577530
add esp, 4
cmp eax, ebx
jbe 0x59929a
mov ecx, dword [esp + 0x34]
mov ebx, eax
mov edx, dword [ebp + 0x14]
sub ecx, edi
add eax, dword [ebp + 0xc]
add ecx, 2
mov dword [edx], ecx
cmp eax, dword [ebp + 0x10]
je 0x5992bf
cmp edi, dword [esp + 0x1c]
jbe 0x5992bf
and edi, dword [esp + 0x44]
dec esi
mov eax, dword [esp + 0x18]
mov edi, dword [eax + edi*4]
cmp edi, dword [esp + 0x30]
sbb edx, edx
xor eax, eax
inc edx
cmp eax, esi
sbb ecx, ecx
neg ecx
test ecx, edx
jne 0x599262
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret