Function at 0x523cd0
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 0x523dab
mov eax, dword [ecx + 4]
cmp eax, dword [ecx + 0xc]
je 0x523dab
push ebx
push edx
call fcn.00526910
mov ebx, eax
add esp, 8
mov dword [esp + 0x28], ebx
test ebx, ebx
je 0x524594
mov eax, dword [esp + 0xc8]
cmp eax, 1
jne 0x523dbb
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.0053b800
push ebx
call fcn.0053b7b0
add esp, 0x28
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xb0
ret
push eax
push edi
call fcn.00526c10
add esp, 8
cmp eax, 0xfffffffa
ja 0x52458b
add eax, 5
cmp eax, 0xfffffff
ja 0x52458b
shl eax, 4
push eax
call fcn.00507360
add esp, 4
mov dword [esp + 0x7c], eax
test eax, eax
je 0x52458b
mov edi, 1
mov dword [esp + 0xa0], eax
mov dword [esp + 0x60], edi
cmp dword [esp + 0xc8], edi
jbe 0x524521
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 0x523e72
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 0x523e99
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.005266d0
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 0x523f06
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], esi
jmp 0x523fb1
lea eax, [ebp - 1]
mov edx, 1
mov ecx, eax
mov dword [esp + 0x1c], eax
shl edx, cl
cmp esi, edx
ja 0x523f1e
xor esi, esi
jmp 0x523f50
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.00573dc0
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 0x523f76
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x18], 0
jmp 0x523fb5
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.00573dc0
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x523fc3
mov ebx, dword [ecx + 0x14]
dec ebx
jmp 0x523fc5
sub ebx, eax
mov eax, dword [esp + 0x4c]
test ebx, ebx
jne 0x523fde
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x10], esi
jmp 0x52406a
mov edx, 1
lea ecx, [ebx - 1]
shl edx, cl
cmp eax, edx
ja 0x523ff6
mov dword [esp + 0x14], 0
jmp 0x524024
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.00573dc0
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x50]
lea ecx, [ebx - 1]
mov edx, 1
shl edx, cl
cmp eax, edx
ja 0x52403a
xor eax, eax
jmp 0x52406a
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.00573dc0
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 0x524112
add ecx, 0xfffffffc
jmp 0x524114
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 0x52416f
add ebx, 0xfffffffc
jmp 0x524171
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 0x52420a
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 0x524233
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 0x524259
inc ecx
cmp eax, ecx
cmovb ecx, eax
lea eax, [ebp + 1]
cmp edi, eax
mov dword [esp + 0x14], ecx
cmova eax, edi
jmp 0x52426b
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 0x52434b
lea ecx, [edi + 3]
cmp ecx, ebx
jb 0x5242bc
cmp edi, edx
jb 0x5242d7
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0xa8]
add eax, edx
cmp ecx, eax
jb 0x524339
mov eax, dword [esp + 0x24]
add eax, edx
cmp edi, eax
jae 0x524339
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.00528150
lea eax, [esp + 0x8c]
push eax
call fcn.00527d10
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.0053bf80
add esp, 0x38
test eax, eax
je 0x5243c8
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
add edi, 4
lea eax, [edi + 3]
cmp eax, ebp
jb 0x5242b1
cmp edi, ebp
jae 0x5243ea
lea eax, [edi + 3]
cmp eax, ebx
jb 0x52435e
cmp edi, edx
jb 0x52437c
mov eax, dword [esp + 0x20]
lea edx, [edi + 3]
mov ecx, dword [esp + 0xa8]
add eax, ecx
cmp edx, eax
jb 0x5243ea
mov eax, dword [esp + 0x24]
add eax, ecx
cmp edi, eax
jae 0x5243ea
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.00528150
lea eax, [esp + 0x8c]
push eax
call fcn.00527d10
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.0053bf80
add esp, 0x38
test eax, eax
jne 0x5243ee
push ebx
call fcn.0053b7b0
push dword [esp + 0x80]
call fcn.00507340
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 0x524506
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.0053b800
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.0053b800
add esp, 0x48
lea eax, [esp + 0xa0]
push eax
call fcn.00527d10
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.0053bf80
add esp, 0x28
test eax, eax
je 0x5243c8
mov ecx, dword [esp + 0x10]
add esi, 4
mov edx, dword [esp + 0x18]
cmp esi, ecx
jb 0x524475
mov edi, dword [esp + 0x60]
inc edi
mov dword [esp + 0x60], edi
cmp edi, dword [esp + 0xc8]
jae 0x524521
mov esi, dword [esp + 0x38]
jmp 0x523e11
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.0053b800
push ebx
call fcn.0053b7b0
push dword [esp + 0xa4]
call fcn.00507340
add esp, 0x2c
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret
push ebx
call fcn.0053b7b0
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xb0
ret