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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x118]
cmp eax, dword [ecx + 8]
jbe 0x5aa77f
sub esp, 0x198
mov eax, dword [esp + 0x19c]
mov ecx, dword [eax + 0x1a0]
test ecx, ecx
jne 0x5aa207
mov ecx, dword [esp + 0x1a8]
test ecx, ecx
je 0x5a9c0f
mov edx, dword [esp + 0x1a4]
mov ebx, dword [edx + ecx*4 - 4]
mov ebp, dword [ebx + 0x34]
mov ebx, dword [ebx + 0x30]
mov esi, dword [eax + 0x24]
cmp dword [eax + 0x28], ebp
jne 0x5a9b83
mov dword [esp], ebx
mov dword [esp + 4], esi
mov dword [esp + 8], ebp
call fcn.004025e0
movzx eax, byte [esp + 0xc]
test al, al
je 0x5a9b7c
mov eax, dword [esp + 0x19c]
mov ecx, dword [esp + 0x1a8]
jmp 0x5a9c0f
mov eax, dword [esp + 0x19c]
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], 5
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
lea eax, [0x627400]
mov dword [esp], eax
lea eax, [esp + 0xbc]
mov dword [esp + 4], eax
call fcn.00408bd0
mov eax, dword [esp + 8]
lea ecx, [0x690ccc]
mov dword [esp + 0x1b4], ecx
mov dword [esp + 0x1b8], eax
add esp, 0x198
ret
mov edx, dword [esp + 0x1b0]
test byte [edx], al
lea esi, [edx + 0x10]
lea edi, [esp + 0xe0]
call fcn.0045ebee
lea edi, [esp + 0xcc]
lea esi, [esp + 0xe0]
call fcn.0045ebee
mov ecx, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
test ebx, 0x80000000
je 0x5a9c7c
shl ebx, 1
mov ebp, ecx
shr ecx, 0x1f
or ecx, ebx
mov ebx, ebp
shl ebp, 1
mov esi, ecx
shl ecx, 1
shr ebp, 0x1f
or ecx, ebp
mov ebp, ecx
add ecx, 0xd7b17f80
shr esi, 0x1f
add ebp, 0xd7b17f80
adc esi, 0xd
jmp 0x5a9c90
mov ebx, dword [esp + 0xd4]
mov esi, dword [esp + 0xd8]
mov ebp, ebx
mov ebx, ecx
mov ecx, ebp
test ecx, ecx
sete cl
test esi, esi
xchg ebp, ebx
sete bl
xchg ebp, ebx
and ebp, ecx
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x5a9cc9
test ebx, 0x3fffffff
jne 0x5a9cc9
call fcn.004a1bd0
lea edi, [esp + 0xe0]
lea esi, [esp]
call fcn.0045ebee
mov eax, dword [esp + 0x19c]
lea esi, [eax + 0x158]
mov dword [esp + 0x98], esi
lea edi, [esp + 0x130]
call fcn.0045ebee
lea edi, [esp]
lea esi, [esp + 0xe0]
call fcn.0045ebee
lea edi, [esp + 0x14]
lea esi, [esp + 0x130]
call fcn.0045ebee
call fcn.0049fd30
movzx eax, byte [esp + 0x28]
test al, al
jne 0x5aa034
mov eax, dword [esp + 0x19c]
lea esi, [eax + 0x16c]
mov dword [esp + 0x98], esi
lea edi, [esp + 0x108]
call fcn.0045ebee
lea edi, [esp]
lea esi, [esp + 0xe0]
call fcn.0045ebee
lea edi, [esp + 0x14]
lea esi, [esp + 0x108]
call fcn.0045ebee
call fcn.0049fbf0
movzx eax, byte [esp + 0x28]
test al, al
jne 0x5a9e61
mov ecx, dword [esp + 0x1b0]
mov ecx, dword [ecx + 0x30]
test ecx, ecx
jne 0x5a9d77
mov ecx, 0x3d090
mov dword [esp + 0x4c], 0
mov edx, dword [esp + 0x1a0]
cmp edx, 1
jne 0x5a9d96
mov ebx, dword [esp + 0x1a8]
test ebx, ebx
jmp 0x5a9da4
cmp edx, 2
jne 0x5a9df1
mov ebx, dword [esp + 0x1a8]
test ebx, ebx
je 0x5a9db5
mov ebp, dword [esp + 0x1a4]
mov ebp, dword [ebp]
cmp edx, 1
jmp 0x5a9e00
lea eax, [0x618d20]
mov dword [esp], eax
call fcn.0040b460
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x38
lea ecx, [0x64760f]
mov dword [eax], ecx
lea ecx, [0x690a60]
mov dword [esp + 0x1b4], ecx
mov dword [esp + 0x1b8], eax
add esp, 0x198
ret
cmp edx, 1
mov ebx, dword [esp + 0x1a8]
mov ebp, 0
mov dword [esp + 0x34], ecx
je 0x5a9e0b
cmp edx, 2
jne 0x5a9e5a
mov dword [esp + 0x80], ebp
mov eax, ebx
mov ebx, dword [0x7b56a0]
mov esi, ecx
mov ecx, dword [0x7b56a4]
mov edi, edx
mov edx, dword [esp + 0x19c]
mov ebp, dword [edx + 0x188]
mov edx, dword [edx + 0x184]
test ebp, ebp
je 0x5aa69e
mov dword [esp + 0x48], ebp
mov dword [esp + 0x30], ecx
mov dword [esp + 0x60], eax
xor eax, eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x60]
jmp 0x5aa6cc
xor eax, eax
jmp 0x5aa228
lea edi, [esp]
lea esi, [esp + 0xe0]
call fcn.0045ebee
lea eax, [0x63e05c]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0x19
call fcn.0049a2b0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x94], eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x54], ecx
lea edi, [esp + 0xf4]
mov esi, dword [esp + 0x98]
call fcn.0045ebee
lea edi, [esp]
lea esi, [esp + 0xf4]
call fcn.0045ebee
lea ecx, [0x63e05c]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], 0x19
call fcn.0049a2b0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x90], eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x50], ecx
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
mov edx, dword [esp + 0x94]
mov dword [esp], edx
mov edx, dword [esp + 0x54]
mov dword [esp + 4], edx
call fcn.00408e20
mov eax, dword [esp + 8]
lea ecx, [0x612980]
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x90]
mov dword [esp], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 4], eax
call fcn.00408e20
mov eax, dword [esp + 8]
lea ecx, [0x612980]
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xb8], eax
lea eax, [0x63ef1a]
mov dword [esp], eax
mov dword [esp + 4], 0x1b
lea eax, [esp + 0xac]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 2
mov dword [esp + 0x10], 2
call fcn.004b5220
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
mov edx, dword [esp + 0x19c]
mov dword [esp + 0xbc], edx
mov dword [esp + 0xc0], 1
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], ecx
lea eax, [0x627400]
mov dword [esp], eax
lea eax, [esp + 0xbc]
mov dword [esp + 4], eax
call fcn.00408bd0
mov eax, dword [esp + 8]
lea ecx, [0x690ccc]
mov dword [esp + 0x1b4], ecx
mov dword [esp + 0x1b8], eax
add esp, 0x198
ret
lea edi, [esp]
lea esi, [esp + 0xe0]
call fcn.0045ebee
lea eax, [0x63e05c]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0x19
call fcn.0049a2b0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x94], eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x54], ecx
lea edi, [esp + 0x11c]
mov esi, dword [esp + 0x98]
call fcn.0045ebee
lea edi, [esp]
lea esi, [esp + 0x11c]
call fcn.0045ebee
lea ecx, [0x63e05c]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], 0x19
call fcn.0049a2b0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x90], eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x50], ecx
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
mov edx, dword [esp + 0x94]
mov dword [esp], edx
mov edx, dword [esp + 0x54]
mov dword [esp + 4], edx
call fcn.00408e20
mov eax, dword [esp + 8]
lea ecx, [0x612980]
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x90]
mov dword [esp], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 4], eax
call fcn.00408e20
mov eax, dword [esp + 8]
lea ecx, [0x612980]
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xb8], eax
lea eax, [0x63f54a]
mov dword [esp], eax
mov dword [esp + 4], 0x1c
lea eax, [esp + 0xac]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 2
mov dword [esp + 0x10], 2
call fcn.004b5220
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
mov edx, dword [esp + 0x19c]
mov dword [esp + 0xbc], edx
mov dword [esp + 0xc0], 1
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], ecx
lea eax, [0x627400]
mov dword [esp], eax
lea eax, [esp + 0xbc]
mov dword [esp + 4], eax
call fcn.00408bd0
mov eax, dword [esp + 8]
lea ecx, [0x690ccc]
mov dword [esp + 0x1b4], ecx
mov dword [esp + 0x1b8], eax
add esp, 0x198
ret
lea eax, [0x690d30]
mov dword [esp + 0x1b4], eax
lea eax, [0x7e07bc]
mov dword [esp + 0x1b8], eax
add esp, 0x198
ret
test al, al
je 0x5aa271
mov eax, ebx
mov ebx, dword [0x7b56b0]
mov dword [esp + 0x7c], ebx
mov esi, ecx
mov ecx, dword [0x7b56b4]
mov edi, edx
mov edx, dword [ebp + 0x188]
mov ebx, dword [ebp + 0x184]
test edx, edx
je 0x5aa5b6
mov dword [esp + 0x44], edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x70], eax
xor eax, eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x70]
jmp 0x5aa5e1
xor eax, eax
test al, al
je 0x5aa298
mov eax, ebx
mov ebx, dword [ebp + 0x188]
mov ebp, dword [ebp + 0x184]
test ebx, ebx
je 0x5aa426
mov dword [esp + 0x54], ebx
xor esi, esi
jmp 0x5aa4e6
cmp edx, 1
jne 0x5aa34e
mov eax, dword [esp + 0x19c]
movzx ecx, byte [eax + 0x1c0]
test cl, cl
je 0x5aa2c2
movzx ecx, byte [eax + 0x1c1]
test cl, cl
jne 0x5aa355
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
lea eax, [0x627400]
mov dword [esp], eax
lea eax, [esp + 0xbc]
mov dword [esp + 4], eax
call fcn.00408bd0
mov eax, dword [esp + 8]
lea ecx, [0x690ccc]
mov dword [esp + 0x1b4], ecx
mov dword [esp + 0x1b8], eax
add esp, 0x198
ret
mov eax, dword [esp + 0x19c]
movzx ecx, byte [eax + 0x1c0]
test cl, cl
je 0x5aa409
mov ecx, dword [eax + 0x1c4]
test ecx, ecx
jl 0x5aa409
lea edx, [ebx - 1]
cmp ecx, edx
jge 0x5aa409
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], 3
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
lea eax, [0x627400]
mov dword [esp], eax
lea eax, [esp + 0xbc]
mov dword [esp + 4], eax
call fcn.00408bd0
mov eax, dword [esp + 8]
lea ecx, [0x690ccc]
mov dword [esp + 0x1b4], ecx
mov dword [esp + 0x1b8], eax
add esp, 0x198
ret
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], 0
add esp, 0x198
ret
xor ebx, ebx
xor ebp, ebp
xor esi, esi
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
lea eax, [0x5aa790]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x19c]
mov dword [esp + 0xa0], eax
lea edx, [esp + 0x4c]
mov dword [esp + 0xa4], edx
mov dword [esp + 0xa8], ecx
mov dword [esp], esi
mov dword [esp + 4], ebp
mov dword [esp + 8], ebx
lea ecx, [esp + 0x9c]
mov dword [esp + 0xc], ecx
call fcn.0059f5f0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
test eax, eax
jne 0x5aa4c6
mov eax, dword [esp + 0x1a0]
cmp eax, 1
mov ebx, dword [esp + 0x1a8]
jmp 0x5aa29b
mov dword [esp + 0x1b4], ecx
mov dword [esp + 0x1b8], edx
add esp, 0x198
ret
add ebp, 0x1c
mov edx, esi
mov esi, ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x50], esi
lea edi, [esp + 0x144]
mov esi, ebp
call fcn.0045ebda
mov ecx, dword [esp + 0x148]
mov esi, edx
mov edx, dword [esp + 0x144]
mov edi, edx
mov edx, dword [0x7b56b0]
mov dword [esp + 0x78], edx
lea edx, [0x7b56b0]
cmp dword [edx + 4], ecx
jne 0x5aa545
mov dword [esp + 0x8c], ebp
xor edx, edx
mov dword [esp + 0x38], edx
lea edx, [0x7b56b0]
jmp 0x5aa56a
lea edx, [0x7b56b0]
mov ebx, dword [esp + 0x54]
mov ebp, dword [esp + 0x8c]
mov ecx, dword [esp + 0x50]
inc ecx
cmp ebx, ecx
jg 0x5aa4db
jmp 0x5aa584
inc edx
mov ebx, dword [esp + 0x78]
mov ebx, dword [esp + 0x54]
mov ebp, dword [esp + 0x8c]
mov dword [esp + 0x38], edx
lea edx, [0x7b56b0]
mov edx, dword [esp + 0x38]
cmp edx, ecx
jge 0x5aa58f
jae 0x5aa5af
mov ebp, dword [edi + edx*4]
mov ebx, dword [esp + 0x78]
lea ebx, [ebx + edx*4]
cmp dword [ebx], ebp
je 0x5aa550
jmp 0x5aa534
mov ecx, dword [esp + 0x34]
mov edx, esi
jmp 0x5aa426
mov edx, dword [esp + 0x154]
mov ebp, dword [esp + 0x158]
mov ebx, dword [esp + 0x15c]
mov ecx, dword [esp + 0x34]
mov esi, edx
jmp 0x5aa42c
mov eax, edx
call fcn.0045e530
xor ecx, ecx
mov edx, edi
mov ebx, eax
mov eax, ecx
mov ecx, esi
jmp 0x5aa273
add ebx, 0x1c
mov edi, dword [esp + 0x7c]
mov ebp, esi
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x1a0]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x2c]
lea edi, [esp + 0x160]
mov esi, ebx
call fcn.0045ebda
mov ecx, dword [esp + 0x164]
mov esi, ebp
mov ebp, dword [esp + 0x160]
mov edi, ebp
mov ebp, dword [esp + 0x2c]
cmp ecx, ebp
jne 0x5aa62f
mov dword [esp + 0x88], ebx
mov dword [esp + 0x68], eax
xor eax, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x68]
jmp 0x5aa654
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x88]
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x54]
inc ecx
cmp edx, ecx
jg 0x5aa5c5
jmp 0x5aa66e
lea edx, [ebp + 1]
mov ebx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x88]
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x44]
mov ebp, dword [esp + 0x3c]
cmp ebp, ecx
jge 0x5aa680
jae 0x5aa697
mov ebx, dword [edi + ebp*4]
mov edx, dword [esp + 0x7c]
lea edx, [edx + ebp*4]
cmp dword [edx], ebx
je 0x5aa63a
jmp 0x5aa620
mov ebp, esi
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x1a0]
jmp 0x5aa5b6
mov ebp, esi
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x1a0]
mov ecx, 1
jmp 0x5aa5b8
mov eax, ebp
call fcn.0045e530
xor ecx, ecx
mov edx, edi
mov ebx, eax
mov ebp, dword [esp + 0x80]
mov eax, ecx
mov ecx, esi
jmp 0x5aa228
add edx, 0x1c
mov ebx, esi
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x1a0]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x30]
lea edi, [esp + 0x17c]
mov esi, edx
call fcn.0045ebda
mov ecx, dword [esp + 0x180]
mov esi, ebx
mov ebx, dword [esp + 0x17c]
mov edi, ebx
mov ebx, dword [esp + 0x30]
cmp ecx, ebx
jne 0x5aa71a
mov dword [esp + 0x84], edx
mov dword [esp + 0x58], eax
xor eax, eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x58]
jmp 0x5aa73b
mov edx, dword [esp + 0x84]
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x54]
inc ecx
cmp ebp, ecx
jg 0x5aa6b4
jmp 0x5aa752
lea edx, [ebx + 1]
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x84]
mov ebx, dword [esp + 0x40]
cmp ebx, ecx
jge 0x5aa762
jae 0x5aa777
mov edx, dword [edi + ebx*4]
lea ebp, [esi + ebx*4]
cmp dword [ebp], edx
je 0x5aa725
jmp 0x5aa70b
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x1a0]
jmp 0x5aa69e
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x1a0]
mov ecx, 1
jmp 0x5aa6a0
mov eax, ebx
call fcn.0045e530
nop
call fcn.0045d0a0
jmp fcn.005a9af0