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

Disassembly:
sub esp, 0x50
mov eax, dword [esp + 0x58]
push ebx
push ebp
cdq
push esi
push edi
mov edi, ecx
mov ebp, eax
mov dword [esp + 0x34], edx
call fcn.00525740
mov ebx, eax
mov esi, edx
add ebx, ebp
adc esi, dword [esp + 0x34]
mov ecx, edi
mov byte [esp + 0x68], 0
call fcn.00525740
cmp edx, esi
jg 0x58f9d4
jl 0x58f271
cmp eax, ebx
jae 0x58f9d4
cmp byte [esp + 0x68], 0xb3
je 0x58f2ae
mov eax, dword [esp + 0x34]
push eax
push ebp
lea ecx, [esp + 0x70]
push ecx
mov ecx, edi
call fcn.0058e7c0
test al, al
je 0x58f9d4
mov ecx, edi
call fcn.00525740
cmp edx, esi
jl 0x58f271
jg 0x58f2a3
cmp eax, ebx
jb 0x58f271
cmp byte [esp + 0x68], 0xb3
jne 0x58f9d4
mov ecx, edi
call fcn.00525740
sub eax, 4
push 0
sbb edx, 0
push 0xc
mov ecx, edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
call fcn.00525760
mov esi, dword [esp + 0x64]
push 0
push 0xc
mov ecx, edi
mov word [esi], ax
call fcn.00525760
push 0
push 4
mov ecx, edi
mov word [esi + 2], ax
call fcn.00525760
mov dword [esp + 0x34], edx
mov dl, byte [esi + 4]
xor dl, al
push 0
and dl, 0xf
xor byte [esi + 4], dl
push 4
mov ecx, edi
call fcn.00525760
mov eax, dword [eax*4 + 0x712f08]
push 0
push 0x12
mov ecx, edi
mov dword [esi + 5], eax
call fcn.00525760
push 0
push 1
mov ecx, edi
mov dword [esi + 9], eax
call fcn.00525760
cmp eax, 1
jne 0x58f9d4
test edx, edx
jne 0x58f9d4
push edx
push 0xa
mov ecx, edi
call fcn.00525760
push 0
push 1
mov ecx, edi
mov dword [esi + 0xd], eax
call fcn.00525760
mov cl, byte [esi + 0x11]
xor cl, al
and cl, 1
xor byte [esi + 0x11], cl
push 0
push 1
mov ecx, edi
mov dword [esp + 0x3c], edx
call fcn.00525760
add al, al
xor al, byte [esi + 0x11]
mov dword [esp + 0x34], edx
and al, 2
xor byte [esi + 0x11], al
mov al, byte [esi + 0x11]
test al, 2
je 0x58f39d
xor ebp, ebp
push 0
push 8
mov ecx, edi
call fcn.00525760
mov byte [esi + ebp + 0x12], al
add ebp, 1
cmp ebp, 0x40
jb 0x58f386
push 0
push 1
mov ecx, edi
call fcn.00525760
mov dword [esp + 0x34], edx
mov dl, byte [esi + 0x52]
xor dl, al
and dl, 1
xor byte [esi + 0x52], dl
test byte [esi + 0x52], 1
je 0x58f3d7
xor ebp, ebp
nop
push 0
push 8
mov ecx, edi
call fcn.00525760
mov byte [esi + ebp + 0x53], al
add ebp, 1
cmp ebp, 0x40
jb 0x58f3c0
mov ecx, edi
call fcn.00525740
movzx ecx, byte [esi + 4]
mov ebx, eax
movzx eax, word [esi]
sub ebx, dword [esp + 0x18]
mov dword [esp + 0x64], eax
sbb edx, dword [esp + 0x1c]
and ecx, 0xf
fild dword [esp + 0x64]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], edx
fdiv dword [ecx*4 + 0x712ec8]
fadd qword [0x632bc8]
call fcn.005dc8a0
movzx edx, word [esi + 2]
xor ebp, ebp
push ebp
mov dword [esi + 0x95], eax
push 8
lea eax, [esp + 0x70]
push eax
mov ecx, edi
mov dword [esi + 0x99], edx
mov dword [esp + 0x70], 1
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebp
call fcn.0058e7c0
test al, al
je 0x58f6b5
cmp byte [esp + 0x68], 0xb5
jne 0x58f6b5
mov ecx, edi
call fcn.00525740
mov ebp, eax
mov ebx, edx
sub ebp, 4
push 0
sbb ebx, 0
push 4
mov ecx, edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebx
call fcn.00525760
movzx ecx, byte [esi + 0x93]
xor cl, al
and cl, 0xf
xor byte [esi + 0x93], cl
push 0
push 1
mov ecx, edi
mov dword [esp + 0x3c], edx
call fcn.00525760
shl al, 4
xor al, byte [esi + 0x93]
push 0
and al, 0x10
xor byte [esi + 0x93], al
push 3
mov ecx, edi
mov dword [esp + 0x3c], edx
call fcn.00525760
mov dword [esp + 0x34], edx
mov dl, byte [esi + 0x93]
and dl, 0x1f
shl al, 5
push 0
or dl, al
push 4
mov ecx, edi
mov byte [esi + 0x93], dl
call fcn.00525760
movzx ecx, byte [esi + 0x94]
xor cl, al
and cl, 0xf
xor byte [esi + 0x94], cl
push 0
push 1
mov ecx, edi
mov dword [esp + 0x3c], edx
call fcn.00525760
shl al, 4
xor al, byte [esi + 0x94]
push 0
and al, 0x10
xor byte [esi + 0x94], al
push 2
mov ecx, edi
mov dword [esp + 0x3c], edx
call fcn.00525760
shl al, 5
xor al, byte [esi + 0x94]
push 0
and al, 0x60
xor byte [esi + 0x94], al
push 2
mov ecx, edi
mov dword [esp + 0x3c], edx
call fcn.00525760
push 0
shl ax, 0xc
or word [esi], ax
push 2
mov ecx, edi
call fcn.00525760
push 0
shl ax, 0xc
or word [esi + 2], ax
push 0xc
mov ecx, edi
call fcn.00525760
shl eax, 0x12
or dword [esi + 9], eax
push 0
push 1
mov ecx, edi
call fcn.00525760
cmp eax, 1
jne 0x58f9d4
test edx, edx
jne 0x58f9d4
push edx
push 8
mov ecx, edi
call fcn.00525760
push 0
shl eax, 0xa
or dword [esi + 0xd], eax
push 1
mov ecx, edi
call fcn.00525760
mov dword [esp + 0x34], edx
mov dl, byte [esi + 0x94]
and dl, 0x7f
shl al, 7
push 0
or dl, al
push 2
mov ecx, edi
mov byte [esi + 0x94], dl
call fcn.00525760
mov ecx, dword [esi + 5]
push 0
add eax, 1
push ecx
adc edx, 0
push edx
push eax
call fcn.005d9dc0
push 0
push 5
mov ecx, edi
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
call fcn.00525760
add eax, 1
adc edx, 0
push edx
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x38]
push edx
push eax
call fcn.005df9a0
mov ecx, edi
mov dword [esi + 5], eax
call fcn.00525740
movzx ecx, word [esi + 2]
sub eax, ebp
mov dword [esp + 0x10], eax
movzx eax, word [esi]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x5c], ecx
movzx ecx, byte [esi + 4]
mov dword [esp + 0x38], eax
mov dword [esp + 0x58], eax
sbb edx, ebx
mov al, cl
and al, 0xf
cmp al, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x40], 4
mov dword [esp + 0x44], 3
mov dword [esp + 0x48], 0x10
mov dword [esp + 0x4c], 9
mov dword [esp + 0x50], 0xdd
mov dword [esp + 0x54], 0x64
jbe 0x58f687
mov edx, ecx
and edx, 0xf
cmp edx, 5
jge 0x58f68e
cmp al, 1
jbe 0x58f687
and ecx, 0xf
jmp 0x58f693
mov ecx, 1
jmp 0x58f693
mov ecx, 5
mov edx, dword [esp + ecx*8 + 0x30]
mov eax, dword [esp + ecx*8 + 0x34]
mov ebx, dword [esp + 0x28]
mov dword [esi + 0x95], edx
mov dword [esi + 0x99], eax
mov dword [esp + 0x64], 2
xor ebp, ebp
mov ecx, dword [esi + 5]
lea ecx, [ecx + ecx*4]
add ecx, ecx
mov eax, 0x2f684bdb
mul ecx
mov eax, dword [esi + 9]
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 4
cmp eax, 0x3fffffff
mov dword [esi + 5], ecx
jne 0x58f6de
xor eax, eax
jmp 0x58f6e4
imul eax, eax, 0x190
mov ecx, dword [esi + 0x95]
test ecx, ecx
mov ebp, dword [esi + 0x99]
mov dword [esi + 9], eax
je 0x58f70b
mov eax, ebp
xor edx, edx
div ecx
mov dword [esp + 0x68], ecx
mov ebp, dword [esp + 0x68]
mov ecx, edx
test ecx, ecx
jne 0x58f6f7
test ebp, ebp
je 0x58f72f
mov eax, dword [esi + 0x95]
xor edx, edx
div ebp
xor edx, edx
mov dword [esi + 0x95], eax
mov eax, dword [esi + 0x99]
div ebp
mov dword [esi + 0x99], eax
mov ebp, dword [esp + 0x6c]
test ebp, ebp
je 0x58f9c8
mov ecx, dword [0x63338c]
mov dword [ebp], ecx
mov edx, dword [0x633390]
mov dword [ebp + 4], edx
mov eax, dword [0x633394]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x64]
cmp eax, 1
mov ecx, dword [0x633398]
mov dword [ebp + 0xc], ecx
jne 0x58f877
mov edx, dword [0x63359c]
mov dword [ebp + 0x10], edx
mov eax, dword [0x6335a0]
mov dword [ebp + 0x14], eax
mov ecx, dword [0x6335a4]
mov dword [ebp + 0x18], ecx
mov edx, dword [0x6335a8]
mov dword [ebp + 0x1c], edx
mov eax, dword [0x63383c]
mov dword [ebp + 0x2c], eax
mov ecx, dword [0x633840]
mov dword [ebp + 0x30], ecx
mov edx, dword [0x633844]
mov ecx, dword [esp + 0x10]
mov dword [ebp + 0x34], edx
mov eax, dword [0x633848]
mov dword [ebp + 0x38], eax
lea eax, [ebx + ecx]
mov dword [esp + 0x68], eax
add eax, 0x60
push eax
mov dword [esp + 0x68], eax
call fcn.005b4663
mov edx, dword [esp + 0x68]
push edx
mov ebx, eax
push 0
push ebx
call fcn.005d9e90
mov eax, dword [esi + 9]
mov dword [ebx + 0x20], eax
mov ecx, dword [esi + 5]
mov dword [ebx + 0x28], ecx
mov dword [ebx + 0x2c], 0
mov dword [ebx + 0x30], 0x28
movzx edx, word [esi]
mov dword [ebx + 0x34], edx
movzx eax, word [esi + 2]
mov dword [ebx + 0x38], eax
movzx ecx, word [esi]
imul ecx, dword [esi + 0x99]
mov eax, dword [esp + 0x78]
mov dword [ebx + 0x48], ecx
movzx edx, word [esi + 2]
imul edx, dword [esi + 0x95]
mov ecx, dword [esp + 0x28]
mov dword [ebx + 0x5c], eax
mov eax, dword [esp + 0x2c]
add esp, 0x10
mov dword [ebx + 0x4c], edx
mov edx, dword [edi]
mov edx, dword [edx + 0xc]
push eax
push ecx
mov ecx, edi
call edx
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
push eax
push esi
lea ecx, [ebx + 0x60]
push ecx
mov ecx, edi
call fcn.00525840
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, eax
or edx, ecx
je 0x58f86e
mov edx, dword [esp + 0x10]
or edx, dword [esp + 0x14]
je 0x58f86e
mov edx, dword [edi]
push ecx
push eax
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
lea eax, [esi + ebx + 0x60]
jmp 0x58f9a0
cmp eax, 2
jne 0x58f9d4
mov edx, dword [0x63388c]
mov dword [ebp + 0x10], edx
mov eax, dword [0x633890]
mov dword [ebp + 0x14], eax
mov ecx, dword [0x633894]
mov dword [ebp + 0x18], ecx
mov edx, dword [0x633898]
mov dword [ebp + 0x1c], edx
mov eax, dword [0x63389c]
mov dword [ebp + 0x2c], eax
mov ecx, dword [0x6338a0]
mov dword [ebp + 0x30], ecx
mov edx, dword [0x6338a4]
mov ecx, dword [esp + 0x10]
mov dword [ebp + 0x34], edx
mov eax, dword [0x6338a8]
mov dword [ebp + 0x38], eax
lea eax, [ebx + ecx]
mov dword [esp + 0x68], eax
add eax, 0x84
push eax
mov dword [esp + 0x68], eax
call fcn.005b4663
mov edx, dword [esp + 0x68]
push edx
mov ebx, eax
push 0
push ebx
call fcn.005d9e90
mov eax, dword [esi + 9]
mov dword [ebx + 0x20], eax
mov ecx, dword [esi + 5]
mov dword [ebx + 0x28], ecx
mov dword [ebx + 0x2c], 0
mov edx, dword [esi + 0x95]
mov dword [ebx + 0x38], edx
mov eax, dword [esi + 0x99]
mov dword [ebx + 0x3c], eax
mov dword [ebx + 0x48], 0x28
movzx ecx, word [esi]
mov dword [ebx + 0x4c], ecx
movzx edx, word [esi + 2]
mov dword [ebx + 0x50], edx
movzx eax, byte [esi + 0x93]
mov edx, dword [esp + 0x78]
shr eax, 5
mov dword [ebx + 0x78], eax
movzx ecx, byte [esi + 0x94]
and ecx, 0xf
mov dword [ebx + 0x7c], ecx
mov ecx, dword [esp + 0x2c]
add esp, 0x10
mov dword [ebx + 0x74], edx
mov eax, dword [edi]
mov edx, dword [esp + 0x18]
mov eax, dword [eax + 0xc]
push ecx
push edx
mov ecx, edi
call eax
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
push ecx
push esi
lea edx, [ebx + 0x84]
push edx
mov ecx, edi
call fcn.00525840
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, eax
or edx, ecx
je 0x58f999
mov edx, dword [esp + 0x10]
or edx, dword [esp + 0x14]
je 0x58f999
mov edx, dword [edi]
push ecx
push eax
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
lea eax, [esi + ebx + 0x84]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push ecx
push edx
push eax
mov ecx, edi
call fcn.00525840
mov ecx, dword [esp + 0x64]
push ecx
push ebx
mov ecx, ebp
call fcn.00497110
push ebx
call fcn.005b465e
add esp, 4
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x50
ret 0xc
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x50
ret 0xc