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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0xc]
cmp eax, dword [ecx + 8]
jbe 0x59771a
sub esp, 0x8c
mov eax, dword [esp + 0x98]
cmp eax, 0x12
jge 0x596b20
xor ecx, ecx
jmp 0x596b4f
mov eax, dword [esp + 0x94]
mov dword [esp], eax
lea ecx, [0x620b23]
mov dword [esp + 4], ecx
mov dword [esp + 8], 0x12
call fcn.00402a50
movzx eax, byte [esp + 0xc]
mov ecx, eax
mov eax, dword [esp + 0x98]
test cl, cl
jne 0x596b5f
mov edx, dword [esp + 0x94]
jmp 0x596bec
mov ecx, dword [0x7bb644]
lea edx, [0x5f2560]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
call fcn.0040faf0
mov eax, dword [esp + 0x10]
movzx ecx, byte [esp + 0x14]
mov edx, dword [eax]
mov eax, dword [eax + 4]
test cl, cl
jne 0x596bec
mov ecx, dword [esp + 0x98]
cmp ecx, 0x12
jb 0x59770f
mov dword [esp], 0
lea eax, [0x61b9ad]
mov dword [esp + 4], eax
mov dword [esp + 8], 2
lea eax, [ecx - 0x12]
mov ecx, eax
neg eax
sar eax, 0x1f
and eax, 0x12
mov edx, dword [esp + 0x94]
add eax, edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
call fcn.0044dd40
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0xa4]
test ecx, ecx
je 0x597540
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], edx
nop
mov ebx, ecx
and ecx, 0x1f
cmp ecx, 0x16
jne 0x596c44
test ebx, 0x200
je 0x596c1f
mov ecx, dword [esp + 0xa0]
jmp 0x596c4b
test ebx, 0x80
je 0x596c32
mov ecx, dword [esp + 0xa0]
mov ebp, dword [ecx]
jmp 0x596c3b
mov ecx, dword [esp + 0xa0]
mov ebp, ecx
test ebp, ebp
jne 0x596c4b
jmp 0x597540
mov ecx, dword [esp + 0xa0]
nop
mov eax, dword [esp + 0x9c]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov byte [esp + 0xc], 1
call fcn.004c2fb0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
test eax, eax
je 0x597492
mov eax, dword [eax + 8]
cmp eax, 0x8cac3de9
ja 0x596d3a
cmp eax, 0x4ffadaa
jne 0x596cda
lea eax, [0x60c3c0]
cmp edx, eax
jne 0x596fb0
mov eax, dword [esp + 0x90]
mov dword [esp], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xc], eax
call fcn.005997e0
add esp, 0x8c
ret
cmp eax, 0x8cac3de9
jne 0x596fb0
lea eax, [0x619180]
cmp edx, eax
jne 0x596fb0
mov eax, dword [esp + 0x90]
mov dword [esp], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x14], eax
call fcn.005990d0
add esp, 0x8c
ret
cmp eax, 0x8ed6f7a2
jne 0x596d9a
lea eax, [0x619fc0]
cmp edx, eax
jne 0x596fb0
mov eax, dword [esp + 0x9c]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 8], eax
call fcn.004c2b60
mov eax, dword [esp + 0x90]
mov dword [esp], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 8], eax
call fcn.005990d0
add esp, 0x8c
ret
cmp eax, 0x91392b9f
jne 0x596ecf
lea eax, [0x60f6c0]
cmp edx, eax
jne 0x596fb0
mov eax, dword [esp + 0xa4]
test eax, 0x100
je 0x596dd4
mov ecx, dword [esp + 0x9c]
mov edx, dword [esp + 0xa0]
jmp 0x596e91
test eax, 0x200
jne 0x596dea
lea ecx, [0x675c20]
mov edx, dword [esp + 0x9c]
jmp 0x596e14
mov ecx, dword [esp + 0x9c]
mov dword [esp], ecx
mov edx, dword [esp + 0xa0]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call fcn.004c53d0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov edx, ecx
mov ecx, eax
mov dword [esp], ecx
mov dword [esp + 4], edx
call fcn.004c6210
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call fcn.004c2b60
mov eax, dword [esp + 0x14]
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x68], ecx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x64], edx
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0xa0]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0xa4]
mov dword [esp + 0x14], ebx
call fcn.004c43b0
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x64]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call fcn.004c1a40
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x90]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
call fcn.005997e0
add esp, 0x8c
ret
cmp eax, 0xa21e82eb
jne 0x596fb0
lea eax, [0x60f7a0]
cmp edx, eax
jne 0x596fb0
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00486a90
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004096f0
mov eax, dword [esp + 8]
nop
movzx ecx, byte [0x7bc410]
test cl, cl
je 0x596f48
lea ecx, [0x5f0d80]
mov dword [0x7bc414], ecx
mov edx, dword [0x7e2780]
test edx, edx
jne 0x596f3b
mov dword [0x7bc418], eax
jmp 0x596f4e
lea edi, [0x7bc418]
call fcn.00463860
jmp 0x596f4e
lea ecx, [0x5f0d80]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x596f78
nop
movzx edx, byte [ecx + 0xf]
mov ebx, edx
and edx, 0x1f
test bl, 0x20
jne 0x596f7e
or edx, 0x80
jmp 0x596f7e
xor edx, edx
xor ecx, ecx
xor eax, eax
mov ebx, dword [esp + 0x90]
mov dword [esp], ebx
mov ebx, dword [esp + 0x58]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x50]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
call fcn.005985f0
add esp, 0x8c
ret
mov dword [esp + 0x60], edx
mov dword [esp + 0x5c], ebx
lea eax, [0x5f6400]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
call fcn.00409a20
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
test eax, eax
je 0x59714c
mov eax, dword [eax + 0x10]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 8]
mov esi, dword [esp + 4]
test eax, eax
jne 0x5976bb
test ecx, ecx
je 0x59709e
nop
movzx ecx, byte [0x7bc410]
test cl, cl
je 0x59703f
mov dword [0x7bc414], esi
mov ecx, dword [0x7e2780]
test ecx, ecx
jne 0x597032
mov dword [0x7bc418], ebp
jmp 0x59703f
lea edi, [0x7bc418]
mov eax, ebp
call fcn.00463860
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], ebp
mov eax, dword [esp + 0x74]
test eax, eax
je 0x597066
nop
movzx ecx, byte [eax + 0xf]
mov edx, ecx
and ecx, 0x1f
test dl, 0x20
jne 0x59706c
or ecx, 0x80
jmp 0x59706c
xor ecx, ecx
xor eax, eax
xor ebp, ebp
mov edx, dword [esp + 0x90]
mov dword [esp], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], ecx
call fcn.00596af0
add esp, 0x8c
ret
nop
mov eax, dword [esp + 0x90]
mov dword [esp], eax
lea eax, [0x61bea7]
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov byte [esp + 0x1c], 2
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
call fcn.005993e0
add esp, 0x8c
ret
lea eax, [0x5f5e60]
mov dword [esp], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 8], eax
call fcn.00409a20
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
test eax, eax
jne 0x597196
lea ecx, [0x5f0d80]
mov ebx, dword [esp + 0xa4]
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0xa0]
jmp 0x597242
mov eax, dword [eax + 0x10]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
test eax, eax
jne 0x59767d
mov dword [esp], 0
call fcn.0044dff0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004096f0
mov eax, dword [esp + 8]
nop
movzx ecx, byte [0x7bc410]
test cl, cl
je 0x59720d
lea ecx, [0x5f0d80]
mov dword [0x7bc414], ecx
mov edx, dword [0x7e2780]
test edx, edx
jne 0x597200
mov dword [0x7bc418], eax
jmp 0x597213
lea edi, [0x7bc418]
call fcn.00463860
jmp 0x597213
lea ecx, [0x5f0d80]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], eax
mov edx, dword [esp + 0x6c]
test edx, edx
je 0x59723c
nop
movzx ebx, byte [edx + 0xf]
mov ebp, ebx
and ebx, 0x1f
xchg ebp, eax
test al, 0x20
xchg ebp, eax
jne 0x597242
or ebx, 0x80
jmp 0x597242
xor ebx, ebx
xor edx, edx
xor eax, eax
nop
mov ebp, ebx
and ebx, 0x1f
cmp ebx, 0x11
ja 0x59733f
cmp ebx, 6
ja 0x5972c4
cmp ebx, 1
je 0x597294
cmp ebx, 2
jb 0x5975ee
mov ecx, dword [esp + 0x90]
mov dword [esp], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebp
call fcn.00598db0
jmp 0x59748b
mov ecx, dword [esp + 0x90]
mov dword [esp], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebp
call fcn.00598ca0
jmp 0x59748b
cmp ebx, 0xc
jbe 0x59730f
lea esi, [ebx - 0xd]
cmp esi, 1
jbe 0x5972df
cmp ebx, 0x11
je 0x5973f8
jmp 0x5975ee
mov ecx, dword [esp + 0x90]
mov dword [esp], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebp
call fcn.00599230
jmp 0x59748b
mov ecx, dword [esp + 0x90]
mov dword [esp], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebp
call fcn.00598f40
jmp 0x59748b
cmp ebx, 0x16
ja 0x5973f3
cmp ebx, 0x14
je 0x5973bf
cmp ebx, 0x15
je 0x59738f
cmp ebx, 0x16
jne 0x5975ee
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ebp
call fcn.004c2b60
mov eax, dword [esp + 0x90]
mov dword [esp], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 8], eax
call fcn.00596af0
jmp 0x59748b
mov ecx, dword [esp + 0x90]
mov dword [esp], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebp
call fcn.00597730
jmp 0x59748b
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ebp
call fcn.004c2b60
mov eax, dword [esp + 0x90]
mov dword [esp], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 8], eax
call fcn.00596af0
jmp 0x59748b
cmp ebx, 0x17
jne 0x597425
mov ecx, dword [esp + 0x90]
mov dword [esp], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebp
call fcn.00598270
jmp 0x59748b
cmp ebx, 0x18
je 0x597460
cmp ebx, 0x19
jne 0x5975ee
mov ecx, dword [esp + 0x90]
mov dword [esp], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebp
call fcn.00597a30
jmp 0x59748b
mov ecx, dword [esp + 0x90]
mov dword [esp], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebp
call fcn.005985f0
add esp, 0x8c
ret
nop
mov eax, dword [esp + 0x90]
mov dword [esp], eax
lea eax, [0x61bea7]
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov byte [esp + 0x1c], 2
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
call fcn.005993e0
add esp, 0x8c
ret
nop
mov eax, dword [esp + 0x90]
mov dword [esp], eax
lea eax, [0x61bea7]
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov byte [esp + 0x1c], 2
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
call fcn.005993e0
add esp, 0x8c
ret
test ebp, ebp
je 0x597663
test ebp, 0x200
jne 0x597663
lea eax, [0x675c20]
mov eax, dword [eax + 0x80]
mov dword [esp], edx
call eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp], 0
lea edx, [0x6221ed]
mov dword [esp + 4], edx
mov dword [esp + 8], 0x15
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
call fcn.0044dd40
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004096f0
mov eax, dword [esp + 8]
lea ecx, [0x5f0d80]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00435790
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ebp
call fcn.004c53d0
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
jmp 0x597600
nop
mov dword [esp + 0x84], ecx
mov dword [esp + 0x88], edx
lea eax, [0x5f7a00]
mov dword [esp], eax
lea ecx, [esp + 0x84]
mov dword [esp + 4], ecx
call fcn.004094a0
mov eax, dword [esp + 8]
lea ecx, [0x5f7a00]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00435790
nop
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], edx
mov dword [esp + 0x88], ebx
lea eax, [0x5f7a00]
mov dword [esp], eax
lea ecx, [esp + 0x84]
mov dword [esp + 4], ecx
call fcn.004094a0
mov eax, dword [esp + 8]
lea ecx, [0x5f7a00]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00435790
mov eax, 0x12
call fcn.00463940
nop
call fcn.00462450
jmp fcn.00596af0