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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x3c]
cmp eax, dword [ecx + 8]
jbe 0x58c112
sub esp, 0xbc
mov eax, dword [esp + 0xc8]
test eax, eax
jbe 0x58c10b
mov ecx, dword [esp + 0xc4]
movzx edx, byte [ecx]
cmp eax, 5
jb 0x58c104
mov byte [esp + 0x4b], dl
mov ebx, dword [esp + 0xcc]
lea ebp, [ebx - 5]
mov dword [esp + 0x74], ebp
mov esi, ebp
xchg ebp, ebx
neg ebx
xchg ebp, ebx
sar ebp, 0x1f
and ebp, 5
add ebp, ecx
mov dword [esp + 0xac], ebp
add eax, 0xfffffffb
mov dword [esp + 0x60], eax
mov edi, dword [esp + 0xc0]
cmp word [edi + 0x10], 0x304
jne 0x58b62a
cmp dl, 0x14
je 0x58c080
mov dword [esp], edi
call fcn.0058b340
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc0]
mov edx, dword [ecx + 0x14]
mov ebx, dword [ecx + 0x18]
test edx, edx
je 0x58c058
je 0x58c0ea
mov dword [esp + 0x70], eax
mov dword [esp + 0x90], edx
mov dword [esp + 0xb8], ebx
lea eax, [0x7bcdc0]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
call fcn.00407e30
movzx eax, byte [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
test al, al
je 0x58bb3b
mov eax, dword [edx + 0x10]
mov dword [esp], ecx
mov ecx, dword [esp + 0xac]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x60]
mov dword [esp + 8], edx
mov ebx, dword [esp + 0x74]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ebx
call eax
mov eax, dword [esp + 0xac]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x74]
xor ebx, ebx
mov ebp, 0xffffffff
xor esi, esi
xor edi, edi
xor eax, eax
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0xa8], eax
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], edx
mov dword [esp + 0x6c], ebx
mov eax, dword [esp + 0xc0]
cmp word [eax + 0x10], 0x304
jne 0x58bb28
movzx eax, byte [esp + 0x4b]
cmp al, 0x17
jne 0x58bad5
cmp edi, 0x4001
jg 0x58ba82
lea ecx, [edi - 1]
jmp 0x58b735
dec ecx
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x6c]
test ecx, ecx
jl 0x58ba72
cmp ecx, edi
jae 0x58c0c7
mov edx, dword [esp + 0xa0]
movzx ebx, byte [edx + ecx]
test bl, bl
jne 0x58b7ab
test ecx, ecx
jne 0x58b72c
movzx eax, byte [0x8abd43]
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 0
mov byte [esp + 0xdc], 0
lea ecx, [0x8b44d0]
mov dword [esp + 0xe0], ecx
lea ecx, [0xb4fa40]
add eax, ecx
mov dword [esp + 0xe4], eax
add esp, 0xbc
ret
mov eax, dword [esp + 0xa8]
mov edi, dword [esp + 0x64]
mov dword [esp + 0xa8], eax
mov dword [esp + 0x64], edi
xchg ebp, eax
mov byte [esp + 0x4a], al
xchg ebp, eax
mov byte [esp + 0x49], bl
mov ebp, dword [esp + 0xc0]
mov eax, dword [ebp + 0x20]
mov edi, dword [ebp + 0x1c]
test edi, edi
jne 0x58b840
mov dword [esp + 0x58], esi
mov dword [esp + 0xa0], edx
mov dword [esp + 0x54], ecx
mov dword [esp], ebp
call fcn.0058b2d0
mov eax, dword [esp + 0xa0]
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0xd8], eax
movzx eax, byte [esp + 0x49]
mov byte [esp + 0xdc], al
mov dword [esp + 0xe0], 0
mov dword [esp + 0xe4], 0
add esp, 0xbc
ret
mov ecx, dword [edi + 0x14]
mov dword [esp], eax
call ecx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x60]
cmp ecx, eax
jl 0x58ba1f
mov edx, ecx
sub ecx, eax
mov ebx, dword [esp + 0x6c]
sub ecx, ebx
nop
mov ebx, ecx
shr ecx, 0x1f
dec ecx
and ecx, ebx
mov ebx, ecx
sar ecx, 8
mov ebp, dword [esp + 0xc4]
mov byte [ebp + 3], cl
mov byte [ebp + 4], bl
lea ecx, [ebx + eax]
test ecx, ecx
jl 0x58c0c0
cmp ebx, ecx
ja 0x58c0c0
mov esi, dword [esp + 0x64]
cmp ecx, esi
ja 0x58c0c0
mov dword [esp + 0x4c], eax
mov edi, esi
sub esi, ebx
mov dword [esp + 0x50], esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and esi, ebx
mov eax, dword [esp + 0xa8]
add esi, eax
test ebx, ebx
jl 0x58c0b9
cmp ecx, edx
ja 0x58c0b9
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x9c], esi
mov esi, dword [esp + 0xc0]
mov edx, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov edx, dword [edx + 0x10]
mov dword [esp], ecx
lea ecx, [esi + 0x24]
mov dword [esp + 4], ecx
mov dword [esp + 8], 8
mov dword [esp + 0xc], 8
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], 5
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
mov ecx, dword [esp + 0x88]
sub edi, ecx
mov dword [esp + 0x88], edi
xchg edi, ebx
neg ebx
xchg edi, ebx
sar edi, 0x1f
and edi, ecx
add edi, eax
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x60]
sub edi, ecx
mov dword [esp + 0x2c], edi
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x30], ecx
call edx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x14], eax
call fcn.004ffa10
cmp dword [esp + 0x18], 1
je 0x58b9f7
movzx eax, byte [0x8abd45]
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 0
mov byte [esp + 0xdc], 0
lea ecx, [0x8b44d0]
mov dword [esp + 0xe0], ecx
lea ecx, [0xb4fa40]
add eax, ecx
mov dword [esp + 0xe4], eax
add esp, 0xbc
ret
movzx eax, byte [esp + 0x4a]
cmp al, 0xff
jne 0x58b9a4
mov ebp, dword [esp + 0xc0]
mov esi, dword [esp + 0x64]
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0x8c]
jmp 0x58b7dc
movzx eax, byte [0x8abd44]
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 0
mov byte [esp + 0xdc], 0
lea ecx, [0x8b44d0]
mov dword [esp + 0xe0], ecx
lea ecx, [0xb4fa40]
add eax, ecx
mov dword [esp + 0xe4], eax
add esp, 0xbc
ret
mov edx, dword [esp + 0xa0]
mov ebx, eax
mov ecx, edi
jmp 0x58b7ab
movzx eax, byte [0x8abd42]
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 0
mov byte [esp + 0xdc], 0
lea ecx, [0x8b44d0]
mov dword [esp + 0xe0], ecx
lea ecx, [0xb4fa40]
add eax, ecx
mov dword [esp + 0xe4], eax
add esp, 0xbc
ret
movzx eax, byte [0x8abd41]
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 0
mov byte [esp + 0xdc], 0
lea ecx, [0x8b44d0]
mov dword [esp + 0xe0], ecx
lea ecx, [0xb4fa40]
add eax, ecx
mov dword [esp + 0xe4], eax
add esp, 0xbc
ret
mov edx, dword [esp + 0xa0]
mov ecx, edi
movzx ebx, byte [esp + 0x4b]
jmp 0x58b7ab
lea eax, [0x7de760]
mov dword [esp], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0xb8]
mov dword [esp + 8], ecx
call fcn.00407e30
mov eax, dword [esp + 0x10]
movzx ecx, byte [esp + 0x14]
mov edx, dword [esp + 0xc]
test cl, cl
jne 0x58bdd4
lea eax, [0x7ccfa0]
mov dword [esp], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 8], eax
call fcn.00407e30
movzx eax, byte [esp + 0x14]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
test al, al
je 0x58c0ea
mov dword [esp + 0x78], ecx
mov dword [esp + 0xb4], edx
mov eax, dword [ecx + 0x10]
mov dword [esp], edx
call eax
mov eax, dword [esp + 0xc0]
mov ecx, dword [eax + 0x1c]
mov edx, dword [esp + 4]
mov dword [esp + 0x80], edx
mov ebx, dword [eax + 0x20]
mov ecx, dword [ecx + 0x14]
mov dword [esp], ebx
call ecx
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x58c0dc
lea edx, [eax + 1]
mov ebx, eax
mov eax, edx
cmp ecx, 0xffffffff
je 0x58bc05
cdq
idiv ecx
jmp 0x58bc07
xor edx, edx
mov eax, ecx
sub eax, edx
cmp ecx, 0xffffffff
je 0x58bc15
cdq
idiv ecx
jmp 0x58bc17
xor edx, edx
add edx, ebx
mov ebx, dword [esp + 0x70]
lea edx, [edx + ebx + 1]
mov eax, dword [esp + 0x60]
mov ebp, edx
cdq
idiv ecx
test edx, edx
jne 0x58bd81
mov eax, dword [esp + 0x60]
cmp eax, ebp
jl 0x58bd81
test ebx, ebx
jle 0x58bd6f
mov ecx, dword [esp + 0x74]
cmp ebx, ecx
ja 0x58c0d5
mov eax, dword [esp + 0x78]
mov edx, dword [eax + 0x18]
mov ebp, dword [esp + 0xb4]
mov dword [esp], ebp
mov esi, dword [esp + 0xac]
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
call edx
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x60]
cmp eax, ecx
ja 0x58c0ce
sub ecx, eax
mov edx, dword [esp + 0x74]
sub edx, eax
mov ebx, edx
neg edx
sar edx, 0x1f
and eax, edx
mov edx, dword [esp + 0xac]
add eax, edx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0xa4], eax
mov edx, dword [esp + 0x78]
mov edx, dword [edx + 0x14]
mov ebp, dword [esp + 0xb4]
mov dword [esp], ebp
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebx
call edx
mov eax, dword [esp + 0xc0]
cmp word [eax + 0x10], 0x300
jne 0x58bd3a
nop
mov ecx, dword [esp + 0x5c]
cmp ecx, 1
jge 0x58bd1a
xor edx, edx
xor ebx, ebx
mov eax, dword [esp + 0xa4]
mov ebp, ebx
xor esi, esi
xor edi, edi
xor ebx, ebx
mov dword [esp + 0xa0], ebx
mov ebx, edx
mov edx, dword [esp + 0x68]
jmp 0x58b6e7
mov edx, dword [esp + 0xa4]
movzx ebx, byte [ecx + edx - 1]
inc ebx
cmp ebx, ecx
jle 0x58bd31
xor edx, edx
xor ebx, ebx
jmp 0x58bcf9
mov edx, ebx
mov ebx, 0xffffffff
jmp 0x58bcf9
mov eax, dword [esp + 0xa4]
mov dword [esp], eax
mov ecx, dword [esp + 0x5c]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x68]
mov dword [esp + 8], edx
call fcn.0058b480
mov edx, dword [esp + 0xc]
movzx ebx, byte [esp + 0x10]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0x5c]
jmp 0x58bcf9
mov ebx, dword [esp + 0x74]
mov ecx, eax
mov eax, dword [esp + 0xac]
jmp 0x58bca2
movzx eax, byte [0x8abd40]
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 0
mov byte [esp + 0xdc], 0
lea ecx, [0x8b44d0]
mov dword [esp + 0xe0], ecx
lea ecx, [0xb4fa40]
add eax, ecx
mov dword [esp + 0xe4], eax
add esp, 0xbc
ret
mov ecx, dword [esp + 0x60]
mov ebx, dword [esp + 0x70]
cmp ecx, ebx
jl 0x58c005
test ebx, ebx
jl 0x58c0e3
mov ebp, dword [esp + 0x74]
cmp ebx, ebp
ja 0x58c0e3
test ebx, ebx
jne 0x58bff2
mov esi, dword [esp + 0xc0]
lea edi, [esi + 0x24]
mov dword [esp + 0x94], eax
mov eax, 8
mov dword [esp + 0x74], eax
mov eax, 8
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0xb8], edi
sub ebp, ebx
mov dword [esp + 0x64], ebp
xchg ebp, ebx
neg ebx
xchg ebp, ebx
sar ebp, 0x1f
and ebp, ebx
mov edi, dword [esp + 0xac]
add ebp, edi
mov dword [esp + 0xa8], ebp
sub ecx, ebx
mov dword [esp + 0x60], ecx
cmp word [esi + 0x10], 0x304
jne 0x58bf68
mov ebx, dword [esp + 0xc4]
mov edi, 5
mov ebx, dword [esp + 0xcc]
mov dword [esp + 0x84], ebx
mov ebx, dword [esp + 0xc4]
mov edx, dword [edx + 0x14]
mov dword [esp], eax
mov dword [esp + 4], ebp
mov dword [esp + 8], 0
mov eax, dword [esp + 0x64]
mov dword [esp + 0xc], eax
mov esi, dword [esp + 0xb8]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x70]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x74]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], edi
mov ebx, dword [esp + 0x84]
mov dword [esp + 0x30], ebx
call edx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x40]
test ebx, ebx
jne 0x58bf15
xor ebx, ebx
mov ebp, 0xffffffff
mov esi, eax
mov edi, edx
mov dword [esp + 0xa0], ecx
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
jmp 0x58b6e7
movzx eax, byte [0x8abd3f]
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 0
mov byte [esp + 0xdc], 0
lea ecx, [0x8b44d0]
mov dword [esp + 0xe0], ecx
lea ecx, [0xb4fa40]
add eax, ecx
mov dword [esp + 0xe4], eax
add esp, 0xbc
ret
mov ebx, dword [esi + 0x28]
mov edi, dword [esi + 0x24]
mov dword [esi + 0x2c], edi
mov dword [esi + 0x30], ebx
lea ebx, [esi + 0x34]
mov edi, dword [esp + 0xc4]
cmp ebx, edi
je 0x58bf92
movzx ebx, word [edi]
movzx edi, byte [edi + 2]
mov word [esi + 0x34], bx
xchg edi, eax
mov byte [esi + 0x36], al
xchg edi, eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0x7c], edx
mov ecx, dword [edx + 0x18]
mov dword [esp], eax
call ecx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x60]
mov edx, ecx
sub ecx, eax
mov eax, ecx
sar ecx, 8
mov ebx, dword [esp + 0xc0]
mov byte [ebx + 0x37], cl
mov byte [ebx + 0x38], al
lea eax, [ebx + 0x2c]
mov ecx, edx
mov edx, dword [esp + 0x7c]
mov ebp, dword [esp + 0xa8]
mov ebx, eax
mov edi, 0xd
mov esi, 0xd
mov dword [esp + 0x84], esi
mov eax, dword [esp + 0xb0]
jmp 0x58be85
mov esi, dword [esp + 0xc0]
mov edi, dword [esp + 0xac]
jmp 0x58be2a
movzx eax, byte [0x8abd3e]
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 0
mov byte [esp + 0xdc], 0
lea ecx, [0x8b44d0]
mov dword [esp + 0xe0], ecx
lea ecx, [0xb4fa40]
add eax, ecx
mov dword [esp + 0xe4], eax
add esp, 0xbc
ret
mov eax, dword [esp + 0xac]
mov edi, dword [esp + 0x74]
xor edx, edx
mov dword [esp + 0x6c], edx
mov ebp, 0xffffffff
mov esi, edi
mov edx, eax
mov ecx, dword [esp + 0x60]
movzx ebx, byte [esp + 0x4b]
jmp 0x58b7b6
mov dword [esp + 0xd0], ebp
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], esi
mov byte [esp + 0xdc], dl
mov dword [esp + 0xe0], 0
mov dword [esp + 0xe4], 0
add esp, 0xbc
ret
call fcn.004288c0
ud2
call fcn.004288c0
ud2
call fcn.004287c0
ud2
call fcn.004288c0
ud2
call fcn.004288c0
ud2
call fcn.004289c0
ud2
call fcn.004288c0
ud2
lea eax, [0x7abe80]
mov dword [esp], eax
lea eax, [0x8ac8f0]
mov dword [esp + 4], eax
call fcn.00429580
ud2
call fcn.004288c0
ud2
call fcn.004287c0
ud2
call fcn.0044d880
jmp fcn.0058b5a0