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

Disassembly:
sub esp, 0x88
mov edx, dword [esp + 0x8c]
push ebx
mov ebx, dword [esp + 0x94]
imul ecx, ebx, 0x98
mov eax, dword [edx + 0x38]
push ebp
mov dword [esp + 0x8c], eax
mov eax, dword [edx + 0x3c]
push esi
mov esi, dword [edx + 0x1c]
add ecx, 0xffffff68
add ecx, esi
mov dword [esp + 0x5c], eax
mov eax, dword [edx + 0x40]
push edi
mov edi, dword [esi + 8]
mov ebp, dword [esi + 0xc]
sub edi, dword [esi]
sub ebp, dword [esi + 4]
mov dword [esp + 0x8c], eax
mov eax, dword [edx + 0x44]
mov dword [esp + 0x64], eax
mov eax, dword [ecx]
mov dword [esp + 0x68], esi
mov dword [esp + 0x84], ecx
cmp eax, dword [ecx + 8]
je 0x5243f4
mov eax, dword [ecx + 4]
cmp eax, dword [ecx + 0xc]
je 0x5243f4
push ebx
push edx
call fcn.00526670
mov ebx, eax
add esp, 8
mov dword [esp + 0x1c], ebx
test ebx, ebx
je 0x524bde
mov eax, dword [esp + 0xa0]
cmp eax, 1
jne 0x524404
mov ebp, dword [esp + 0x84]
push eax
mov edx, dword [ebp + 0x90]
mov eax, edx
mov edi, dword [ebp + 0x88]
sub eax, edi
sub edx, dword [ebp]
sub edi, dword [ebp]
push eax
mov eax, dword [esp + 0xa4]
push 1
push dword [eax + 0x34]
mov eax, dword [ebp + 0x94]
sub eax, dword [ebp + 4]
push eax
mov eax, dword [ebp + 0x8c]
sub eax, dword [ebp + 4]
push edx
push eax
push edi
push ebx
call fcn.0053b560
push ebx
call fcn.0053b510
add esp, 0x28
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x88
ret
push eax
push esi
call fcn.00526970
add esp, 8
cmp eax, 0xfffffff
ja 0x524bd5
shl eax, 4
push eax
call fcn.00507010
mov esi, eax
add esp, 4
mov dword [esp + 0x14], esi
test esi, esi
je 0x524bd5
cmp dword [esp + 0xa0], 1
mov dword [esp + 0x44], 1
jbe 0x524b6e
nop dword [eax]
mov esi, dword [esp + 0x68]
mov eax, edi
add esi, 0x98
mov dword [esp + 0x54], edi
mov dword [esp + 0x2c], edi
mov ecx, ebp
mov dword [esp + 0x28], edi
mov dword [esp + 0x68], esi
mov ebx, dword [esi]
mov edi, dword [esi + 8]
mov edx, dword [esi + 0xc]
sub edi, ebx
mov dword [esp + 0x74], ebp
mov dword [esp + 0x30], ebp
mov dword [esp + 0x3c], ebp
mov ebp, dword [esi + 4]
sub edx, ebp
mov esi, edi
mov dword [esp + 0x48], edi
sub esi, eax
mov dword [esp + 0x38], edx
mov dword [esp + 0x58], esi
and ebx, 0x80000001
jns 0x5244a6
dec ebx
or ebx, 0xfffffffe
inc ebx
mov eax, edx
mov dword [esp + 0x40], ebx
sub eax, ecx
mov dword [esp + 0x5c], eax
and ebp, 0x80000001
jns 0x5244bf
dec ebp
or ebp, 0xfffffffe
inc ebp
mov edi, dword [esp + 0x8c]
lea eax, [esp + 0x50]
push eax
mov esi, dword [esp + 0x98]
lea eax, [esp + 0x8c]
push eax
lea eax, [esp + 0x54]
mov dword [esp + 0x78], ebp
mov ebp, dword [esp + 0x4c]
push eax
lea eax, [esp + 0x9c]
push eax
push dword [esp + 0x74]
mov eax, dword [esp + 0xb0]
push edi
push dword [esp + 0x78]
push esi
push 0
push ebp
push eax
call fcn.00526430
mov ecx, dword [esp + 0xc8]
add esp, 0x2c
test ebp, ebp
mov eax, 1
cmovne eax, ebp
mov ebx, dword [ecx + 0x14]
mov ebp, ebx
sub ebp, eax
jne 0x524533
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], edi
jmp 0x5245de
lea eax, [ebp - 1]
mov edx, 1
mov ecx, eax
mov dword [esp + 0x34], eax
shl edx, cl
cmp esi, edx
ja 0x52454b
xor esi, esi
jmp 0x524584
mov eax, esi
xor edi, edi
sub eax, edx
xor esi, esi
xor edx, edx
mov ecx, ebp
bts esi, ecx
cmp ecx, 0x20
cmovae edi, esi
xor esi, edi
cmp ecx, 0x40
cmovae edi, esi
add eax, esi
adc edx, edi
add eax, 0xffffffff
adc edx, 0xffffffff
call fcn.00573b20
mov edi, dword [esp + 0x8c]
mov esi, eax
mov eax, dword [esp + 0x34]
mov edx, 1
mov dword [esp + 0x10], esi
mov ecx, eax
shl edx, cl
cmp edi, edx
ja 0x52459f
mov dword [esp + 0x20], 0
jmp 0x5245d7
xor eax, eax
mov ecx, edi
sub ecx, edx
xor edi, edi
xor edx, edx
mov esi, ebp
bts edi, esi
cmp esi, 0x20
cmovae eax, edi
xor edi, eax
cmp esi, 0x40
cmovae eax, edi
add ecx, edi
adc edx, eax
add ecx, 0xffffffff
mov eax, ecx
mov ecx, ebp
adc edx, 0xffffffff
call fcn.00573b20
mov esi, dword [esp + 0x10]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x44]
test eax, eax
jne 0x5245ec
mov ebx, dword [ecx + 0x14]
dec ebx
jmp 0x5245ee
sub ebx, eax
mov eax, dword [esp + 0x60]
test ebx, ebx
jne 0x524607
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x10], esi
jmp 0x524693
mov edx, 1
lea ecx, [ebx - 1]
shl edx, cl
cmp eax, edx
ja 0x52461f
mov dword [esp + 0x18], 0
jmp 0x52464d
sub eax, edx
xor esi, esi
xor edx, edx
xor edi, edi
mov ecx, ebx
bts esi, ecx
cmp ecx, 0x20
cmovae edi, esi
xor esi, edi
cmp ecx, 0x40
cmovae edi, esi
add eax, esi
adc edx, edi
add eax, 0xffffffff
adc edx, 0xffffffff
call fcn.00573b20
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x64]
lea ecx, [ebx - 1]
mov edx, 1
shl edx, cl
cmp eax, edx
ja 0x524663
xor eax, eax
jmp 0x524693
mov ecx, eax
xor edi, edi
sub ecx, edx
xor eax, eax
xor edx, edx
mov esi, ebx
bts edi, esi
cmp esi, 0x20
cmovae eax, edi
xor edi, eax
cmp esi, 0x40
cmovae eax, edi
add ecx, edi
adc edx, eax
add ecx, 0xffffffff
mov eax, ecx
mov ecx, ebx
adc edx, 0xffffffff
call fcn.00573b20
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x68]
mov esi, dword [eax + 0x40]
sub edx, esi
mov edi, dword [eax + 0x20]
mov ebx, dword [eax + 0x1c]
mov ebp, dword [eax + 0x44]
xor eax, eax
cmp dword [esp + 0x90], esi
cmovae eax, edx
sub ecx, edi
xor edx, edx
mov dword [esp + 0x34], eax
cmp dword [esp + 0x4c], edi
cmovae edx, ecx
mov ecx, dword [esp + 0x88]
sub ecx, esi
mov dword [esp + 0x4c], edx
xor edx, edx
cmp dword [esp + 0x88], esi
cmovae edx, ecx
mov ecx, dword [esp + 0x50]
sub ecx, edi
xor esi, esi
cmp dword [esp + 0x50], edi
cmovae esi, ecx
xor ecx, ecx
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x10]
sub esi, ebx
cmp dword [esp + 0x10], ebx
cmovb esi, ecx
mov ecx, dword [esp + 0x20]
sub ecx, ebx
xor edi, edi
cmp dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x18]
cmovb ecx, edi
sub ebx, ebp
cmp dword [esp + 0x18], ebp
cmovb ebx, edi
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x24]
sub ebx, ebp
cmp dword [esp + 0x24], ebp
cmovb ebx, edi
mov edi, eax
cmp edi, 2
jb 0x524743
add edi, 0xfffffffe
jmp 0x524745
xor edi, edi
xor eax, eax
mov dword [esp + 0x6c], edi
add edx, 2
mov dword [esp + 0x90], edi
lea ebp, [esi - 2]
adc eax, eax
neg eax
or eax, edx
mov edx, dword [esp + 0x2c]
cmp eax, dword [esp + 0x28]
cmovb edx, eax
xor eax, eax
cmp esi, 2
mov dword [esp + 0x2c], edx
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x4c]
cmovb ebp, eax
add ecx, 2
mov dword [esp + 0x34], ebp
adc eax, eax
neg eax
or eax, ecx
mov ecx, dword [esp + 0x58]
cmp eax, ecx
cmovb ecx, eax
mov dword [esp + 0x24], ecx
cmp edx, 2
jb 0x5247a4
add edx, 0xfffffffe
jmp 0x5247a6
xor edx, edx
mov ecx, dword [esp + 0x50]
xor eax, eax
add ecx, 2
mov dword [esp + 0x28], 0
mov dword [esp + 0x20], edx
adc eax, eax
mov dword [esp + 0x4c], edx
neg eax
or eax, ecx
mov ecx, dword [esp + 0x30]
cmp eax, dword [esp + 0x3c]
cmovb ecx, eax
mov eax, dword [esp + 0x18]
cmp eax, 2
mov dword [esp + 0x30], ecx
mov dword [esp + 0x50], ecx
lea esi, [eax - 2]
cmovb esi, dword [esp + 0x28]
xor eax, eax
add ebx, 2
mov dword [esp + 0x3c], esi
adc eax, eax
neg eax
or eax, ebx
mov ebx, dword [esp + 0x5c]
cmp eax, ebx
cmovb ebx, eax
lea eax, [ebp*2]
mov ebp, dword [esp + 0x24]
add edi, edi
add ebp, ebp
mov dword [esp + 0x18], ebx
cmp dword [esp + 0x40], 0
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], edi
jne 0x524848
lea ebx, [eax + 1]
mov eax, dword [esp + 0x2c]
cmp edi, ebx
lea ecx, [ebp + 1]
cmovb ebx, edi
mov edi, dword [esp + 0x48]
add eax, eax
mov ebp, edi
cmp eax, ecx
cmova ecx, eax
cmp ecx, edi
cmovb ebp, ecx
mov ecx, dword [esp + 0x30]
jmp 0x52486b
lea ebx, [edi + 1]
mov edi, dword [esp + 0x48]
cmp eax, ebx
cmovb ebx, eax
mov eax, dword [esp + 0x2c]
lea eax, [eax*2 + 1]
cmp ebp, eax
cmova eax, ebp
mov ebp, edi
cmp eax, edi
cmovb ebp, eax
mov eax, dword [esp + 0x18]
add esi, esi
add eax, eax
mov dword [esp + 0x80], esi
cmp dword [esp + 0x70], 0
mov dword [esp + 0x10], eax
jne 0x5248a3
lea eax, [esi + 1]
lea esi, [edx + edx]
cmp esi, eax
cmovb eax, esi
lea esi, [ecx + ecx]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x10]
inc eax
cmp esi, eax
cmova eax, esi
jmp 0x5248c3
lea eax, [edx*2 + 1]
cmp esi, eax
cmovb eax, esi
mov dword [esp + 0x28], eax
lea eax, [ecx*2 + 1]
cmp dword [esp + 0x10], eax
cmova eax, dword [esp + 0x10]
mov esi, dword [esp + 0x38]
cmp eax, esi
mov dword [esp + 0x10], esi
cmovb esi, eax
mov dword [esp + 0x10], esi
xor esi, esi
cmp dword [esp + 0x38], esi
jbe 0x524a13
cmp esi, edx
jb 0x5248e8
cmp esi, ecx
jb 0x524908
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x74]
add eax, ecx
cmp esi, eax
jb 0x524a00
mov eax, dword [esp + 0x18]
add eax, ecx
cmp esi, eax
jae 0x524a00
cmp ebp, 1
jb 0x524926
cmp ebp, edi
jae 0x52493c
mov eax, dword [esp + 0x14]
lea ecx, [ebp*4]
mov dword [eax + ecx - 4], 0
jmp 0x524935
lea ecx, [ebp*4]
cmp ebp, edi
jae 0x52493c
mov eax, dword [esp + 0x14]
mov dword [ecx + eax], 0
mov eax, dword [esp + 0x40]
lea edi, [esi + 1]
add eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x14]
push 1
push 0
push 2
lea eax, [ecx + eax*4]
push eax
push edi
push dword [esp + 0x40]
push esi
push dword [esp + 0x88]
push dword [esp + 0x3c]
call fcn.0053b560
mov eax, dword [esp + 0xa0]
sub eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x38]
push 1
push 0
add ecx, 4
push 2
lea eax, [ecx + eax*4]
push eax
mov eax, dword [esp + 0x58]
add eax, dword [esp + 0x88]
push edi
push eax
mov eax, dword [esp + 0x70]
add eax, dword [esp + 0x90]
push esi
push eax
push dword [esp + 0x60]
call fcn.0053b560
mov edx, dword [esp + 0x9c]
add esp, 0x48
push dword [esp + 0x24]
push dword [esp + 0x38]
push dword [esp + 0x34]
push dword [esp + 0x78]
push dword [esp + 0x50]
push edx
push dword [esp + 0x70]
push dword [esp + 0x30]
call fcn.005232c0
mov eax, dword [esp + 0x34]
push 1
push 0
push 1
lea eax, [eax + ebx*4]
push eax
push edi
push ebp
push esi
push ebx
push dword [esp + 0x5c]
call fcn.0053bce0
add esp, 0x44
test eax, eax
je 0x524b47
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x48]
inc esi
mov ecx, dword [esp + 0x30]
cmp esi, dword [esp + 0x38]
jb 0x5248e0
cmp ebx, ebp
jae 0x524b24
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x14]
lea eax, [esi + edx*2]
shl eax, 4
add eax, ecx
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x80]
sub eax, esi
mov esi, dword [esp + 0x18]
inc eax
shl eax, 4
add eax, ecx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x74]
add esi, eax
add eax, dword [esp + 0x3c]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x28]
shl eax, 4
add eax, ecx
mov dword [esp + 0x78], esi
mov dword [esp + 0x54], eax
push 1
push 8
mov esi, ebp
mov eax, 4
sub esi, ebx
push 1
push dword [esp + 0x88]
cmp esi, 4
push dword [esp + 0x40]
cmova esi, eax
lea edi, [esi + ebx]
push edi
push edx
push ebx
push dword [esp + 0x3c]
call fcn.0053b560
push 1
push 8
push 1
push dword [esp + 0xb0]
push dword [esp + 0xac]
push edi
push dword [esp + 0x94]
push ebx
push dword [esp + 0x60]
call fcn.0053b560
add esp, 0x48
push dword [esp + 0x18]
push dword [esp + 0x40]
push dword [esp + 0x38]
push dword [esp + 0x2c]
push dword [esp + 0x80]
push dword [esp + 0x88]
push dword [esp + 0x74]
push esi
mov esi, dword [esp + 0x34]
push esi
call fcn.00523500
push 1
push 4
push 1
push dword [esp + 0x84]
push dword [esp + 0x44]
push edi
push dword [esp + 0x64]
push ebx
push dword [esp + 0x60]
call fcn.0053bce0
add esp, 0x48
test eax, eax
je 0x524b4b
mov edx, dword [esp + 0x20]
mov ebx, edi
cmp ebx, ebp
jb 0x524a68
jmp 0x524b28
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x44]
inc eax
mov dword [esp + 0x44], eax
cmp eax, dword [esp + 0xa0]
jae 0x524b6a
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x38]
jmp 0x524450
mov esi, dword [esp + 0x14]
push dword [esp + 0x1c]
call fcn.0053b510
push esi
call fcn.005070a0
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x88
ret
mov ebx, dword [esp + 0x1c]
push esi
call fcn.005070a0
mov ebp, dword [esp + 0x88]
push 1
mov edx, dword [ebp + 0x90]
mov eax, edx
mov edi, dword [ebp + 0x88]
sub eax, edi
sub edx, dword [ebp]
sub edi, dword [ebp]
push eax
mov eax, dword [esp + 0xa8]
push 1
push dword [eax + 0x34]
mov eax, dword [ebp + 0x94]
sub eax, dword [ebp + 4]
push eax
mov eax, dword [ebp + 0x8c]
sub eax, dword [ebp + 4]
push edx
push eax
push edi
push ebx
call fcn.0053b560
push ebx
call fcn.0053b510
add esp, 0x2c
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x88
ret
push ebx
call fcn.0053b510
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x88
ret