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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x40]
cmp eax, dword [ecx + 8]
jbe 0x58a560
sub esp, 0xc0
mov eax, dword [esp + 0xc4]
mov eax, dword [eax]
mov ecx, dword [esp + 0xc8]
mov edx, dword [ecx + 0x14]
mov ebx, dword [ecx + 0x10]
xor ebp, ebp
xor esi, esi
xor edi, edi
jmp 0x589fc8
inc ebp
mov esi, ecx
mov ecx, dword [esp + 0xc8]
cmp ebp, edx
jge 0x589fee
movzx ecx, byte [ebx + ebp]
cmp cl, 1
jne 0x589fdc
mov ecx, 1
jmp 0x589fbe
cmp cl, 0x40
jne 0x589fea
mov ecx, esi
mov edi, 1
jmp 0x589fbe
mov ecx, esi
jmp 0x589fbe
mov dword [esp + 0x78], eax
mov edx, dword [eax + 0x24]
mov edx, dword [edx + 0x20]
test edx, edx
jne 0x58a43e
xchg edi, eax
mov byte [esp + 0x2f], al
xchg edi, eax
xchg esi, eax
mov byte [esp + 0x2e], al
xchg esi, eax
lea eax, [0x762da0]
mov dword [esp], eax
call fcn.00409d00
mov eax, dword [esp + 0x78]
mov ecx, dword [eax + 0x24]
mov edx, dword [esp + 4]
mov ebx, dword [ecx + 0x10]
mov ecx, dword [ecx + 0xc]
test ebx, ebx
jle 0x58a21e
mov dword [esp + 0x8c], edx
mov dword [esp + 0x58], ebx
movzx ebp, byte [esp + 0x2e]
movzx esi, byte [esp + 0x2f]
xor edi, edi
jmp 0x58a1b2
mov ebx, dword [esp + 0x80]
lea esi, [ebx + 0xc]
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x80], esi
mov eax, dword [esi + 8]
mov ecx, dword [esi + 4]
mov ebx, dword [esi]
mov ebp, dword [edx + 0x38]
mov edi, dword [edx + 0x34]
mov edx, dword [edx + 0x30]
mov dword [esp], edx
mov dword [esp + 4], edi
mov dword [esp + 8], ebp
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
call fcn.00402190
movzx eax, byte [esp + 0x18]
test al, al
jne 0x58a254
mov eax, dword [esp + 0x4c]
inc eax
mov ecx, dword [esp + 0x50]
cmp eax, ecx
jl 0x58a04f
mov eax, dword [esp + 0x3c]
inc eax
mov ecx, dword [esp + 0x54]
cmp eax, ecx
jge 0x58a170
mov edx, dword [esp + 0x84]
add edx, 0xc
mov ebx, dword [esp + 0xc8]
movzx ebp, byte [esp + 0x2e]
mov esi, dword [esp + 0x8c]
movzx edi, byte [esp + 0x2f]
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0xc8]
mov dword [esp + 0x3c], eax
mov eax, edx
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x84], eax
mov ecx, dword [eax + 8]
mov dword [esp + 0x48], ecx
mov ebx, dword [eax + 4]
mov eax, dword [eax]
mov edx, dword [edx + 0x2c]
mov ecx, dword [esp + 0x3c]
test ecx, ecx
jne 0x58a2b4
test edx, edx
je 0x58a2b4
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x58a13a
mov eax, dword [edx + 0x4c]
cmp eax, 1
je 0x58a2aa
movzx eax, byte [esp + 0x2f]
test al, al
je 0x58a170
mov ebx, dword [edx + 0x4c]
cmp ebx, 3
jne 0x58a170
mov ebx, dword [edi + 0x2c]
mov esi, dword [edi + 0x28]
test ebx, ebx
je 0x58a27f
mov dword [esp + 0x6c], edx
mov dword [esp + 0x50], ebx
mov byte [esp + 0x5c], al
xor eax, eax
mov dword [esp + 0x4c], eax
jmp 0x58a061
mov eax, dword [esp + 0x40]
inc eax
mov ecx, dword [esp + 0x58]
cmp eax, ecx
jge 0x58a21e
mov edx, dword [esp + 0x88]
add edx, 0x30
movzx ebx, byte [esp + 0x2e]
mov ebp, dword [esp + 0x8c]
movzx esi, byte [esp + 0x2f]
mov ebx, ecx
movzx ebp, byte [esp + 0x2e]
mov ecx, edx
mov edi, eax
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x88], ecx
mov dword [esp + 0x40], edi
lea edi, [esp + 0x90]
mov esi, ecx
call fcn.0044cf78
mov ecx, dword [0xa8f2d0]
test ecx, ecx
jne 0x58a408
mov edi, edx
lea esi, [esp + 0x90]
call fcn.0044cf78
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x58a3f6
mov ecx, dword [edx + 4]
mov esi, eax
mov eax, dword [edx]
test ecx, ecx
jle 0x58a170
mov dword [esp + 0x54], ecx
mov edi, dword [esp + 0xc8]
mov dword [esp + 0x64], eax
xor eax, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x64]
jmp 0x58a0fe
lea eax, [0x762da0]
mov dword [esp], eax
call fcn.00409d00
mov eax, dword [esp + 4]
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
add esp, 0xc0
ret
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
add esp, 0xc0
ret
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
add esp, 0xc0
ret
movzx eax, byte [esp + 0x2f]
jmp 0x58a14b
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x48]
mov dword [esp + 8], eax
call fcn.0056d1a0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
test edx, edx
jne 0x58a2f7
movzx ebp, byte [esp + 0x2e]
xchg ebp, eax
test al, al
xchg ebp, eax
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0xc8]
mov edx, eax
jmp 0x58a12c
mov dword [esp + 0x74], ecx
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x78]
mov dword [esp], eax
mov byte [esp + 4], 0x50
call fcn.005837b0
mov eax, dword [esp + 0x40]
mov dword [esp], eax
call fcn.00459700
mov eax, dword [esp + 8]
mov dword [esp + 0x58], eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 0x44]
mov edx, dword [edx + 0x10]
mov ebx, dword [esp + 0x74]
mov dword [esp], ebx
call edx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
mov dword [esp], 0
lea edx, [0x7a424f]
mov dword [esp + 4], edx
mov dword [esp + 8], 0x29
mov edx, dword [esp + 0x7c]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x10], edx
lea edx, [0x78f725]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], 2
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], eax
call fcn.0043bda0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x70], ecx
lea edx, [0x7436e0]
mov dword [esp], edx
call fcn.00409d00
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x30]
mov dword [edi + 4], eax
mov eax, dword [0xa8f2d0]
test eax, eax
jne 0x58a3eb
mov eax, dword [esp + 0x70]
mov dword [edi], eax
mov dword [esp + 0xcc], 0
lea eax, [0x7fe200]
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], edi
add esp, 0xc0
ret
mov eax, dword [esp + 0x70]
call fcn.0044c9e0
jmp 0x58a3c5
movzx ecx, byte [esp + 0x2f]
test cl, cl
jne 0x58a1f1
jmp 0x58a170
lea eax, [0x762da0]
mov dword [esp], eax
mov dword [esp + 4], edx
lea eax, [esp + 0x90]
mov dword [esp + 8], eax
call fcn.0040f700
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x8c]
mov ebx, dword [esp + 0x58]
movzx ebp, byte [esp + 0x2e]
jmp 0x58a1e7
movzx edx, byte [ecx + 0xc]
test dl, dl
je 0x58a508
mov edx, dword [ecx + 0x24]
mov ebx, dword [ecx + 0x20]
mov ebp, dword [ecx + 0x1c]
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x38], edx
mov dword [esp + 0x34], ebx
lea eax, [0x74ac20]
mov dword [esp], eax
call fcn.00409d00
mov eax, dword [esp + 0xc8]
mov ecx, dword [eax + 0x30]
mov edx, dword [eax + 0x2c]
mov eax, dword [eax + 0x28]
mov edi, dword [esp + 4]
mov dword [edi + 4], edx
mov dword [edi + 8], ecx
mov ecx, dword [0xa8f2d0]
test ecx, ecx
jne 0x58a501
mov dword [edi], eax
mov ecx, dword [esp + 0x34]
mov dword [edi + 0x10], ecx
mov ecx, dword [esp + 0x38]
mov dword [edi + 0x14], ecx
mov ecx, dword [0xa8f2d0]
test ecx, ecx
jne 0x58a4eb
mov eax, dword [esp + 0x7c]
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0x78]
mov eax, dword [eax + 0x24]
mov edx, dword [eax + 0x20]
mov dword [esp], edi
mov eax, dword [edx]
call eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 8]
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xd4], ecx
add esp, 0xc0
ret
lea ecx, [edi + 0xc]
mov eax, edi
mov edi, ecx
mov edx, eax
mov eax, dword [esp + 0x7c]
call fcn.0044c9e0
mov edi, edx
jmp 0x58a4b2
call fcn.0044c9e0
jmp 0x58a493
mov edx, dword [0xa759f0]
mov ebx, dword [0xa759ec]
mov ebp, dword [0xa759e8]
xchg edi, eax
test al, al
xchg edi, eax
je 0x58a537
xchg esi, eax
test al, al
xchg esi, eax
jne 0x58a453
add ebx, 0xfffffffc
test ebx, ebx
jge 0x58a453
jmp 0x58a552
cmp ebx, 3
jb 0x58a559
add edx, 0xfffffffd
mov edi, edx
neg edx
sar edx, 0x1f
and edx, 6
add ebp, edx
add ebx, 0xfffffffd
mov edx, edi
jmp 0x58a520
call fcn.004267e0
ud2
call fcn.004267e0
ud2
call fcn.0044b280
jmp fcn.00589f80