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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0xbc]
cmp eax, dword [ecx + 8]
jbe 0x5220b8
sub esp, 0x13c
mov eax, dword [esp + 0x148]
test eax, eax
jle 0x52207b
mov ecx, dword [esp + 0x154]
test ecx, ecx
jle 0x522069
mov edx, dword [esp + 0x140]
lea ebx, [edx + eax*4 - 4]
mov ebp, dword [esp + 0x14c]
lea esi, [ebp + ecx*4 - 4]
cmp ebx, esi
jne 0x522025
xor eax, eax
xor edx, edx
xor ebx, ebx
mov esi, dword [esp + 0x168]
cmp esi, 1
jne 0x522019
mov edi, dword [esp + 0x164]
cmp dword [edi], 1
je 0x521ff9
mov edi, dword [esp + 0x15c]
test edi, edi
je 0x521fa5
cmp edi, 1
jne 0x521f99
mov edi, dword [esp + 0x158]
cmp dword [edi], 1
jne 0x521411
test esi, esi
jne 0x521f15
test esi, esi
je 0x52141d
cmp eax, esi
jl 0x521e82
nop
mov ebx, dword [esp + 0x150]
cmp eax, ebx
jl 0x521de3
mov dword [esp + 0x148], eax
mov eax, dword [esp + 0x150]
cmp ebx, eax
jle 0x521ddc
mov dword [esp + 0xac], ebx
mov dword [esp + 0x140], edx
cmp edx, ebp
je 0x521468
mov dword [esp], edx
mov dword [esp + 4], ebp
shl eax, 2
mov dword [esp + 8], eax
call fcn.0045e900
mov eax, dword [0x74db50]
mov ecx, dword [0x74db54]
mov edx, dword [0x74db58]
mov ebx, dword [esp + 0x14c]
mov dword [esp], ebx
mov ebp, dword [esp + 0x150]
mov dword [esp + 4], ebp
mov esi, dword [esp + 0x154]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call fcn.0051c020
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x521dc9
mov ebx, dword [esp + 0x15c]
cmp ebx, 1
jle 0x521dbd
mov ebp, dword [esp + 0x168]
test ebp, ebp
jg 0x521c65
mov esi, dword [esp + 0x158]
mov edi, dword [esi + ebx*4 - 4]
nop
nop
cmp edi, 0x10000
jb 0x521c5c
mov eax, edi
shr edi, 0x10
mov ecx, 0x10
cmp edi, 0x100
jb 0x521507
shr edi, 8
add ecx, 8
cmp edi, 0x100
jae 0x5220ab
mov edx, esi
lea esi, [0x7257e0]
movzx esi, byte [esi + edi]
lea esi, [esi + ecx - 0x20]
xchg esi, ebx
neg ebx
xchg esi, ebx
lea ecx, [esi + 1]
cmp ecx, 0x20
sbb edi, edi
shl eax, cl
and eax, edi
add esi, 0xffffffe1
xchg esi, ebx
neg ebx
xchg esi, ebx
mov dword [esp + 0x58], esi
xor ecx, ecx
mov edi, dword [esp + 0x148]
mov edi, dword [esp + 0xac]
mov dword [esp + 0x144], edi
xor edi, edi
mov dword [esp + 0x54], edi
xor ecx, ecx
mov dword [esp + 0x50], ecx
xor ecx, ecx
mov dword [esp + 0x118], ecx
xor ecx, ecx
mov dword [esp + 0x60], ecx
xor ecx, ecx
mov dword [esp + 0x64], ecx
xor ecx, ecx
mov dword [esp + 0x11c], ecx
xor ecx, ecx
mov dword [esp + 0xac], ecx
xor ecx, ecx
mov dword [esp + 0xa8], ecx
xor ecx, ecx
mov dword [esp + 0x138], ecx
mov edi, dword [esp + 0x148]
xor ecx, ecx
jmp 0x521623
mov ebp, dword [esp + 0x70]
inc ebp
shl ebx, 1
mov dword [esp + 0x144], ecx
mov dword [esp + 0x140], eax
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], edi
mov dword [esp + 0x110], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xac], eax
mov dword [esp + 0x108], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0xa8], ecx
mov dword [esp + 0x100], edx
mov edx, dword [esp + 0x120]
mov dword [esp + 0x138], edx
mov edx, dword [esp + 0x158]
mov esi, dword [esp + 0x58]
mov ecx, ebp
mov eax, ebx
mov edi, dword [esp + 0x100]
mov ebx, dword [esp + 0x15c]
mov ebp, dword [esp + 0x168]
cmp esi, ecx
jle 0x5218a0
mov dword [esp + 0xa4], edi
mov dword [esp + 0x70], ecx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x118]
mov dword [esp], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x140]
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x144]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call fcn.0051e2f0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x5c]
test ebx, 0x80000000
jne 0x5217fb
mov ebp, dword [esp + 0x168]
test ebp, ebp
mov esi, dword [esp + 0xa4]
mov edi, dword [esp + 0x144]
mov esi, dword [esp + 0x140]
mov dword [esp + 0x118], esi
mov esi, dword [esp + 0xa4]
jne 0x521710
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x6c], eax
mov dword [esp + 0xf0], ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x68], ecx
mov dword [esp + 0xe8], edx
mov edx, dword [esp + 0x138]
mov dword [esp + 0x120], edx
mov eax, dword [esp + 0xf8]
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0xe8]
jmp 0x5215a9
mov dword [esp + 0x134], eax
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x9c], edx
mov ebx, dword [esp + 0x118]
mov dword [esp], ebx
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov ebx, dword [esp + 0x11c]
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
mov ebx, dword [esp + 0x164]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebp
mov esi, dword [esp + 0x16c]
mov dword [esp + 0x2c], esi
call fcn.0051edb0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0xa8]
mov edi, dword [esp + 0x138]
mov dword [esp + 0x118], edi
mov edi, dword [esp + 0x9c]
mov dword [esp + 0x64], edi
mov edi, dword [esp + 0xa0]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x134]
mov dword [esp + 0x11c], edi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x68], ebp
mov dword [esp + 0x120], ebx
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x168]
mov esi, dword [esp + 0xac]
mov edi, dword [esp + 0xa8]
jmp 0x5215a9
mov dword [esp + 0x130], eax
mov dword [esp + 0x98], ecx
mov dword [esp + 0x94], edx
mov ebx, dword [esp + 0x140]
mov dword [esp], ebx
mov ebx, dword [esp + 0x144]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0xa4]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0x14c]
mov dword [esp + 0x18], ebx
mov ebp, dword [esp + 0x150]
mov dword [esp + 0x1c], ebp
mov esi, dword [esp + 0x154]
mov dword [esp + 0x20], esi
call fcn.0051d130
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x168]
test ebp, ebp
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x94]
mov edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x130]
mov dword [esp + 0x118], ebx
mov ebx, dword [esp + 0x5c]
jmp 0x5216bb
lea esi, [ebx - 2]
mov eax, dword [esp + 0x138]
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0xe0]
jmp 0x521bd6
mov ebp, dword [esp + 0x74]
inc ebp
shl ebx, 1
mov dword [esp + 0x74], ebp
mov dword [esp + 0x144], ecx
mov dword [esp + 0x140], eax
mov dword [esp + 0x54], edi
mov dword [esp + 0x50], esi
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xac], eax
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x120]
mov ebp, dword [esp + 0x168]
mov esi, dword [esp + 0x78]
mov edi, edx
mov edx, dword [esp + 0x158]
mov ebp, dword [esp + 0x74]
cmp ebp, 0x20
jge 0x521ba7
mov dword [esp + 0x90], edi
mov dword [esp + 0x12c], eax
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x5c], ebx
mov eax, dword [esp + 0x118]
mov dword [esp], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x140]
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x144]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call fcn.0051e2f0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x5c]
test ebx, 0x80000000
jne 0x521b08
mov ebp, dword [esp + 0x168]
test ebp, ebp
mov esi, dword [esp + 0x144]
mov edi, dword [esp + 0x90]
mov esi, dword [esp + 0x140]
mov dword [esp + 0x118], esi
mov esi, dword [esp + 0x144]
jne 0x521a1d
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x6c], eax
mov dword [esp + 0xb8], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x68], ecx
mov dword [esp + 0xb0], edx
mov edx, dword [esp + 0x12c]
mov dword [esp + 0x120], edx
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0xb0]
jmp 0x5218cf
mov dword [esp + 0x88], edx
mov dword [esp + 0x128], eax
mov dword [esp + 0x84], ecx
mov ebx, dword [esp + 0x118]
mov dword [esp], ebx
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov ebx, dword [esp + 0x11c]
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
mov ebx, dword [esp + 0x164]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebp
mov esi, dword [esp + 0x16c]
mov dword [esp + 0x2c], esi
call fcn.0051edb0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0xac]
mov edi, dword [esp + 0x12c]
mov dword [esp + 0x118], edi
mov edi, dword [esp + 0x88]
mov dword [esp + 0x64], edi
mov edi, dword [esp + 0x84]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x128]
mov dword [esp + 0x11c], edi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x68], ebp
mov dword [esp + 0x120], ebx
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x168]
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0xac]
jmp 0x5218cf
mov dword [esp + 0x124], eax
mov dword [esp + 0x80], edx
mov dword [esp + 0x7c], ecx
mov ebx, dword [esp + 0x140]
mov dword [esp], ebx
mov ebx, dword [esp + 0x144]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x90]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0x14c]
mov dword [esp + 0x18], ebx
mov ebp, dword [esp + 0x150]
mov dword [esp + 0x1c], ebp
mov esi, dword [esp + 0x154]
mov dword [esp + 0x20], esi
call fcn.0051d130
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x168]
test ebp, ebp
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x80]
mov ebx, dword [esp + 0x124]
mov dword [esp + 0x118], ebx
mov ebx, dword [esp + 0x5c]
jmp 0x5219c8
dec esi
mov ebx, dword [esp + 0x15c]
mov ebp, dword [esp + 0xac]
mov ebp, dword [esp + 0x168]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0xd8]
test esi, esi
jl 0x521c0d
cmp ebx, esi
jbe 0x5220a2
mov dword [esp + 0x78], esi
mov ebx, dword [edx + esi*4]
mov dword [esp + 0xd0], eax
xor eax, eax
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xd0]
jmp 0x521921
mov ecx, dword [esp + 0x144]
mov ebx, dword [esp + 0x140]
mov eax, ecx
jmp 0x521c21
mov ecx, ebp
test ecx, ecx
jle 0x521c38
lea ebp, [ecx - 1]
cmp eax, ebp
jbe 0x522099
mov esi, dword [ebx + ecx*4 - 4]
test esi, esi
je 0x521c1f
cmp edi, ecx
jb 0x522092
mov dword [esp + 0x170], ebx
mov dword [esp + 0x174], ecx
mov dword [esp + 0x178], edi
add esp, 0x13c
ret
mov eax, edi
xor ecx, ecx
jmp 0x5214f9
mov eax, dword [esp + 0x164]
mov eax, dword [eax]
test eax, 1
je 0x521d1b
mov eax, dword [esp + 0x140]
mov dword [esp], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x148]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x150]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x154]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x158]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ebx
mov eax, dword [esp + 0x160]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x164]
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ebp
mov eax, dword [esp + 0x16c]
mov dword [esp + 0x2c], eax
call fcn.00522b10
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x170], eax
mov dword [esp + 0x174], ecx
mov dword [esp + 0x178], edx
add esp, 0x13c
ret
mov eax, dword [esp + 0x140]
mov dword [esp], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x148]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x150]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x154]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x158]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ebx
mov eax, dword [esp + 0x160]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x164]
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ebp
mov eax, dword [esp + 0x16c]
mov dword [esp + 0x2c], eax
call fcn.005220d0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x170], eax
mov dword [esp + 0x174], ecx
mov dword [esp + 0x178], edx
add esp, 0x13c
ret
mov ebp, dword [esp + 0x168]
jmp 0x5214d6
mov ebx, dword [esp + 0x15c]
mov ebp, dword [esp + 0x168]
jmp 0x5214d6
mov eax, ebx
jmp 0x521443
cmp ebx, 1
jne 0x521e35
lea eax, [0x5be500]
mov dword [esp], eax
mov dword [esp + 4], 1
mov dword [esp + 8], 1
call fcn.00444f30
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x154]
mov ebp, dword [esp + 0x14c]
mov esi, dword [esp + 0x168]
mov edi, dword [esp + 0x158]
mov ebx, 1
mov eax, 1
jmp 0x52142d
lea eax, [0x5be500]
mov dword [esp], eax
mov dword [esp + 4], ebx
lea eax, [ebx + 4]
mov dword [esp + 0x4c], eax
mov dword [esp + 8], eax
call fcn.00444f30
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x154]
mov ebp, dword [esp + 0x14c]
mov esi, dword [esp + 0x168]
mov edi, dword [esp + 0x158]
mov ebx, dword [esp + 0x150]
mov eax, dword [esp + 0x4c]
jmp 0x52142d
cmp esi, 1
jne 0x521ecf
lea eax, [0x5be500]
mov dword [esp], eax
mov dword [esp + 4], 1
mov dword [esp + 8], 1
call fcn.00444f30
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x154]
mov ebp, dword [esp + 0x14c]
mov esi, dword [esp + 0x168]
mov edi, dword [esp + 0x158]
mov eax, 1
jmp 0x52141d
lea eax, [0x5be500]
mov dword [esp], eax
mov dword [esp + 4], esi
lea ecx, [esi + 4]
mov dword [esp + 0x48], ecx
mov dword [esp + 8], ecx
call fcn.00444f30
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x154]
mov ebp, dword [esp + 0x14c]
mov esi, dword [esp + 0x168]
mov edi, dword [esp + 0x158]
mov eax, dword [esp + 0x48]
jmp 0x52141d
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x150]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x164]
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x16c]
mov dword [esp + 0x2c], eax
call fcn.0051edb0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x170], eax
mov dword [esp + 0x174], ecx
mov dword [esp + 0x178], edx
add esp, 0x13c
ret
mov edi, dword [esp + 0x158]
jmp 0x521411
cmp eax, 1
jl 0x521fd0
mov dword [edx], 1
mov dword [esp + 0x170], edx
mov dword [esp + 0x174], 1
mov dword [esp + 0x178], eax
add esp, 0x13c
ret
lea eax, [0x5be500]
mov dword [esp], eax
mov dword [esp + 4], 1
mov dword [esp + 8], 1
call fcn.00444f30
mov edx, dword [esp + 0xc]
mov eax, 1
jmp 0x521faa
mov dword [esp + 0x170], edx
mov dword [esp + 0x174], 0
mov dword [esp + 0x178], eax
add esp, 0x13c
ret
mov edi, dword [esp + 0x164]
jmp 0x5213e5
test eax, eax
jle 0x522060
mov ebx, dword [esp + 0x160]
test ebx, ebx
jle 0x522057
lea esi, [edx + eax*4 - 4]
mov edi, dword [esp + 0x158]
lea ebx, [edi + ebx*4 - 4]
cmp esi, ebx
je 0x5213bf
mov ebx, dword [esp + 0x144]
jmp 0x5213c5
mov edi, dword [esp + 0x158]
jmp 0x52204b
mov edi, dword [esp + 0x158]
jmp 0x52204b
test eax, eax
mov edx, dword [esp + 0x140]
mov ebp, dword [esp + 0x14c]
jmp 0x522027
mov ecx, dword [esp + 0x154]
mov edx, dword [esp + 0x140]
mov ebp, dword [esp + 0x14c]
jmp 0x522027
mov edx, edi
call fcn.0045e030
mov ecx, eax
mov eax, ebp
call fcn.0045dff0
mov eax, esi
mov ecx, ebx
call fcn.0045dff0
mov eax, edi
mov ecx, 0x100
call fcn.0045e000
nop
call fcn.0045ca10
jmp fcn.00521360