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

Disassembly:
sub esp, 0xb0
mov edx, dword [esp + 0xb4]
push ebx
mov ebx, dword [esp + 0xbc]
push ebp
mov eax, dword [edx + 0x38]
imul ecx, ebx, 0x98
push esi
mov dword [esp + 0x98], eax
mov eax, dword [edx + 0x3c]
push edi
mov edi, dword [edx + 0x1c]
add ecx, 0xffffff68
add ecx, edi
mov dword [esp + 0x4c], eax
mov eax, dword [edx + 0x40]
mov dword [esp + 0x48], eax
mov eax, dword [edx + 0x44]
mov esi, dword [edi + 8]
mov ebp, dword [edi + 0xc]
sub esi, dword [edi]
sub ebp, dword [edi + 4]
mov dword [esp + 0x50], eax
mov eax, dword [ecx]
mov dword [esp + 0x54], edi
mov dword [esp + 0x78], ecx
cmp eax, dword [ecx + 8]
je 0x523b0b
mov eax, dword [ecx + 4]
cmp eax, dword [ecx + 0xc]
je 0x523b0b
push ebx
push edx
call fcn.00526670
mov ebx, eax
add esp, 8
mov dword [esp + 0x28], ebx
test ebx, ebx
je 0x5242f4
mov eax, dword [esp + 0xc8]
cmp eax, 1
jne 0x523b1b
mov ebp, dword [esp + 0x78]
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 + 0xcc]
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, 0xb0
ret
push eax
push edi
call fcn.00526970
add esp, 8
cmp eax, 0xfffffffa
ja 0x5242eb
add eax, 5
cmp eax, 0xfffffff
ja 0x5242eb
shl eax, 4
push eax
call fcn.005070c0
add esp, 4
mov dword [esp + 0x7c], eax
test eax, eax
je 0x5242eb
mov edi, 1
mov dword [esp + 0xa0], eax
mov dword [esp + 0x60], edi
cmp dword [esp + 0xc8], edi
jbe 0x524281
mov edx, dword [esp + 0x54]
mov ecx, ebp
add edx, 0x98
mov dword [esp + 0xa8], ebp
mov dword [esp + 0x2c], ebp
mov eax, esi
mov dword [esp + 0x68], ebp
mov dword [esp + 0x54], edx
mov ebp, dword [edx]
mov ebx, dword [edx + 8]
sub ebx, ebp
mov dword [esp + 0x84], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x64], esi
mov esi, dword [edx + 4]
mov edx, dword [edx + 0xc]
mov dword [esp + 0x38], ebx
sub edx, esi
sub ebx, eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x80], ebx
and ebp, 0x80000001
jns 0x523bd2
dec ebp
or ebp, 0xfffffffe
inc ebp
mov eax, edx
mov dword [esp + 0x6c], ebp
sub eax, ecx
mov dword [esp + 0x88], ebp
mov dword [esp + 0x24], eax
mov dword [esp + 0xa4], eax
and esi, 0x80000001
jns 0x523bf9
dec esi
or esi, 0xfffffffe
inc esi
lea eax, [esp + 0x40]
mov dword [esp + 0x5c], esi
push eax
lea eax, [esp + 0x78]
mov dword [esp + 0xb0], esi
mov esi, dword [esp + 0xa0]
push eax
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x7c]
push eax
push dword [esp + 0x60]
mov eax, dword [esp + 0xd8]
push dword [esp + 0x5c]
push dword [esp + 0x64]
push esi
push 0
push edi
push eax
call fcn.00526430
mov ecx, dword [esp + 0xf0]
add esp, 0x2c
test edi, edi
mov eax, 1
cmovne eax, edi
mov ebx, dword [ecx + 0x14]
mov ebp, ebx
sub ebp, eax
jne 0x523c66
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], esi
jmp 0x523d11
lea eax, [ebp - 1]
mov edx, 1
mov ecx, eax
mov dword [esp + 0x1c], eax
shl edx, cl
cmp esi, edx
ja 0x523c7e
xor esi, esi
jmp 0x523cb0
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 esi, eax
mov eax, dword [esp + 0x1c]
mov ecx, eax
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x48]
mov edx, 1
shl edx, cl
cmp eax, edx
ja 0x523cd6
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x18], 0
jmp 0x523d15
mov ecx, eax
xor edi, edi
sub ecx, edx
xor eax, eax
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 ecx, dword [esp + 0xc4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x523d23
mov ebx, dword [ecx + 0x14]
dec ebx
jmp 0x523d25
sub ebx, eax
mov eax, dword [esp + 0x4c]
test ebx, ebx
jne 0x523d3e
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x10], esi
jmp 0x523dca
mov edx, 1
lea ecx, [ebx - 1]
shl edx, cl
cmp eax, edx
ja 0x523d56
mov dword [esp + 0x14], 0
jmp 0x523d84
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 + 0x14], eax
mov eax, dword [esp + 0x50]
lea ecx, [ebx - 1]
mov edx, 1
shl edx, cl
cmp eax, edx
ja 0x523d9a
xor eax, eax
jmp 0x523dca
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 + 0x70]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x54]
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 + 0x70], esi
cmovae eax, edx
sub ecx, edi
xor edx, edx
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x3c], edi
cmovae edx, ecx
mov ecx, dword [esp + 0x74]
sub ecx, esi
mov dword [esp + 0x3c], edx
xor edx, edx
cmp dword [esp + 0x74], esi
cmovae edx, ecx
mov ecx, dword [esp + 0x40]
sub ecx, edi
xor esi, esi
cmp dword [esp + 0x40], edi
mov edi, dword [esp + 0x10]
cmovae esi, ecx
xor ecx, ecx
sub edi, ebx
mov dword [esp + 0x40], esi
cmp dword [esp + 0x10], ebx
mov esi, dword [esp + 0x18]
cmovb edi, ecx
sub esi, ebx
cmp dword [esp + 0x18], ebx
cmovb esi, ecx
mov ecx, dword [esp + 0x14]
sub ecx, ebp
xor ebx, ebx
cmp dword [esp + 0x14], ebp
cmovb ecx, ebx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x20]
sub ecx, ebp
cmp dword [esp + 0x20], ebp
cmovb ecx, ebx
mov dword [esp + 0x10], ecx
mov ecx, eax
cmp ecx, 4
jb 0x523e72
add ecx, 0xfffffffc
jmp 0x523e74
xor ecx, ecx
xor eax, eax
mov ebx, dword [esp + 0x3c]
add edx, 4
mov dword [esp + 0x44], ecx
mov dword [esp + 0x70], ecx
adc eax, eax
neg eax
or eax, edx
mov edx, dword [esp + 0x30]
cmp eax, dword [esp + 0x64]
cmovb edx, eax
lea eax, [edi - 4]
mov dword [esp + 0x30], edx
mov dword [esp + 0x74], edx
xor edx, edx
cmp edi, 4
cmovb eax, edx
mov dword [esp + 0x1c], eax
xor eax, eax
add esi, 4
adc eax, eax
neg eax
or eax, esi
mov esi, dword [esp + 0x58]
cmp eax, esi
cmovb esi, eax
mov dword [esp + 0x58], esi
cmp ebx, 4
jb 0x523ecf
add ebx, 0xfffffffc
jmp 0x523ed1
xor ebx, ebx
mov edx, dword [esp + 0x40]
xor eax, eax
add edx, 4
mov dword [esp + 0x18], ebx
mov dword [esp + 0x3c], ebx
adc eax, eax
neg eax
or eax, edx
mov edx, dword [esp + 0x2c]
cmp eax, dword [esp + 0x68]
cmovb edx, eax
mov eax, dword [esp + 0x14]
xor ebp, ebp
mov dword [esp + 0x2c], edx
cmp eax, 4
mov dword [esp + 0x40], edx
lea edi, [eax - 4]
cmovb edi, ebp
mov ebp, dword [esp + 0x10]
xor eax, eax
mov dword [esp + 0x20], edi
add ebp, 4
adc eax, eax
neg eax
or eax, ebp
mov ebp, dword [esp + 0x24]
cmp eax, ebp
cmovb ebp, eax
mov eax, dword [esp + 0x1c]
add esi, esi
mov dword [esp + 0x24], ebp
add eax, eax
mov dword [esp + 0x14], esi
add ecx, ecx
cmp dword [esp + 0x6c], 0
jne 0x523f6a
mov edx, dword [esp + 0x38]
lea esi, [eax + 1]
mov eax, dword [esp + 0x30]
cmp ecx, esi
cmovb esi, ecx
mov ecx, dword [esp + 0x14]
inc ecx
add eax, eax
cmp eax, ecx
cmova ecx, eax
cmp ecx, edx
cmovb edx, ecx
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x2c]
jmp 0x523f93
lea esi, [ecx + 1]
mov ecx, dword [esp + 0x38]
cmp eax, esi
cmovb esi, eax
mov eax, dword [esp + 0x30]
lea eax, [eax*2 + 1]
cmp dword [esp + 0x14], eax
cmova eax, dword [esp + 0x14]
cmp eax, ecx
cmovb ecx, eax
mov dword [esp + 0x10], ecx
add ebp, ebp
lea ecx, [edi + edi]
cmp dword [esp + 0x5c], 0
lea eax, [ebx + ebx]
lea edi, [edx + edx]
jne 0x523fb9
inc ecx
cmp eax, ecx
cmovb ecx, eax
lea eax, [ebp + 1]
cmp edi, eax
mov dword [esp + 0x14], ecx
cmova eax, edi
jmp 0x523fcb
inc eax
cmp ecx, eax
cmovb eax, ecx
mov dword [esp + 0x14], eax
lea eax, [edi + 1]
cmp ebp, eax
cmova eax, ebp
mov ebp, dword [esp + 0x34]
cmp eax, ebp
mov ecx, ebp
cmovb ecx, eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x8c], eax
xor edi, edi
mov eax, dword [esp + 0x30]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x98], eax
cmp ebp, 3
jbe 0x5240ab
lea ecx, [edi + 3]
cmp ecx, ebx
jb 0x52401c
cmp edi, edx
jb 0x524037
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0xa8]
add eax, edx
cmp ecx, eax
jb 0x524099
mov eax, dword [esp + 0x24]
add eax, edx
cmp edi, eax
jae 0x524099
mov ebx, dword [esp + 0x28]
mov eax, ebp
sub eax, edi
mov ecx, 4
cmp eax, 4
cmova eax, ecx
push eax
push edi
lea eax, [esp + 0x84]
push ebx
push eax
call fcn.00527eb0
lea eax, [esp + 0x8c]
push eax
call fcn.00527a70
push 1
push 1
push 4
mov eax, esi
shl eax, 4
add eax, dword [esp + 0x9c]
push eax
lea eax, [edi + 4]
push eax
push dword [esp + 0x38]
push edi
push esi
push ebx
call fcn.0053bce0
add esp, 0x38
test eax, eax
je 0x524128
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
add edi, 4
lea eax, [edi + 3]
cmp eax, ebp
jb 0x524011
cmp edi, ebp
jae 0x52414a
lea eax, [edi + 3]
cmp eax, ebx
jb 0x5240be
cmp edi, edx
jb 0x5240dc
mov eax, dword [esp + 0x20]
lea edx, [edi + 3]
mov ecx, dword [esp + 0xa8]
add eax, ecx
cmp edx, eax
jb 0x52414a
mov eax, dword [esp + 0x24]
add eax, ecx
cmp edi, eax
jae 0x52414a
mov ebx, dword [esp + 0x28]
mov eax, ebp
sub eax, edi
push eax
push edi
lea eax, [esp + 0x84]
push ebx
push eax
call fcn.00527eb0
lea eax, [esp + 0x8c]
push eax
call fcn.00527a70
push 1
push 1
push 4
mov eax, esi
shl eax, 4
add eax, dword [esp + 0x9c]
push eax
push ebp
push dword [esp + 0x38]
push edi
push esi
push ebx
call fcn.0053bce0
add esp, 0x38
test eax, eax
jne 0x52414e
push ebx
call fcn.0053b510
push dword [esp + 0x80]
call fcn.005070a0
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xb0], edx
mov dword [esp + 0xb8], edi
mov dword [esp + 0xbc], eax
cmp esi, ecx
jae 0x524266
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x24]
lea eax, [eax + edx*2]
shl eax, 4
add eax, dword [esp + 0x7c]
mov dword [esp + 0x6c], eax
lea eax, [edi + edi]
sub eax, dword [esp + 0x5c]
inc eax
shl eax, 4
add eax, dword [esp + 0x7c]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xa8]
add ebx, eax
add eax, edi
mov dword [esp + 0x64], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
shl eax, 4
add eax, dword [esp + 0x7c]
mov dword [esp + 0x44], eax
push 1
mov eax, ecx
mov ecx, 4
push 8
sub eax, esi
push 1
push dword [esp + 0x78]
cmp eax, 4
push dword [esp + 0x3c]
cmova eax, ecx
lea edi, [eax + esi]
push edi
push edx
push esi
push ebx
call fcn.0053b560
push 1
push 8
push 1
push dword [esp + 0x98]
push dword [esp + 0x98]
push edi
push dword [esp + 0x58]
push esi
push ebx
call fcn.0053b560
add esp, 0x48
lea eax, [esp + 0xa0]
push eax
call fcn.00527a70
push 1
push 4
push 1
push dword [esp + 0x54]
push dword [esp + 0x48]
push edi
push dword [esp + 0x30]
push esi
push ebx
call fcn.0053bce0
add esp, 0x28
test eax, eax
je 0x524128
mov ecx, dword [esp + 0x10]
add esi, 4
mov edx, dword [esp + 0x18]
cmp esi, ecx
jb 0x5241d5
mov edi, dword [esp + 0x60]
inc edi
mov dword [esp + 0x60], edi
cmp edi, dword [esp + 0xc8]
jae 0x524281
mov esi, dword [esp + 0x38]
jmp 0x523b71
mov ebp, dword [esp + 0x78]
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 + 0xcc]
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
push dword [esp + 0xa4]
call fcn.005070a0
add esp, 0x2c
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret
push ebx
call fcn.0053b510
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xb0
ret