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

Disassembly:
push esi
push edi
push ebx
push ebp
lea esp, [esp - 0x7c]
mov eax, dword [0x104c5878]
mov edi, dword [esp + 0x90]
xor eax, esp
mov dword [esp + 0x78], eax
test edi, edi
je 0x100532f4
mov edx, dword [esp + 0x94]
test edx, edx
je 0x100532f4
mov ebx, dword [esp + 0x98]
test ebx, ebx
je 0x100532f4
neg edi
neg edx
and edi, 3
mov ebp, ebx
add edi, dword [esp + 0x90]
and edx, 3
neg ebp
add edx, dword [esp + 0x94]
and ebp, 3
cmp dword [edi], 0x4249474e
je 0x10052942
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
mov eax, 0xffffffef
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc
cmp dword [edx], 0x4249474e
je 0x10052965
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
mov eax, 0xffffffef
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc
cmp dword [ebp + ebx], 0x4249474e
je 0x1005298a
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
mov eax, 0xffffffef
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc
mov eax, dword [edi + 8]
cmp eax, dword [edx + 8]
mov ecx, dword [edx + 8]
mov esi, ecx
cmovge esi, eax
cmp esi, dword [ebp + ebx + 0xc]
jg 0x100530a2
mov esi, 1
cmp eax, ecx
mov dword [esp + 0x74], esi
mov dword [esp + 0x70], 0
cmovl ecx, eax
mov dword [ebp + ebx + 8], ecx
mov eax, dword [edi + 8]
mov dword [ebp + ebx + 4], esi
mov ecx, dword [edx + 8]
cmp eax, dword [edx + 8]
jge 0x100529cf
mov esi, edx
jmp 0x10052a2d
cmp eax, ecx
jne 0x10052a29
push eax
mov ecx, dword [edx + 0x10]
push ecx
push eax
mov esi, dword [edi + 0x10]
push esi
mov dword [esp + 0x10], edx
call fcn.10073210
mov edx, dword [esp + 0x10]
lea esp, [esp + 0x10]
cmp eax, 0xffffffff
jne 0x100529f7
mov esi, edx
jmp 0x10052a2d
test eax, eax
jne 0x10052a29
mov eax, dword [edi + 0x10]
mov edi, dword [edi + 8]
push edi
push eax
mov edx, dword [ebp + ebx + 0x10]
push edx
call fcn.1005a010
lea esp, [esp + 0xc]
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
xor eax, eax
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc
mov esi, edi
mov edi, edx
mov eax, dword [esi + 0xc]
push eax
push 0
mov edx, dword [esi + 0x14]
push edx
call fcn.10059f60
mov eax, dword [edi + 0xc]
push eax
push 0
mov edx, dword [edi + 0x14]
push edx
call fcn.10059f60
mov eax, dword [esi + 8]
push eax
mov edx, dword [esi + 0x10]
push edx
mov ecx, dword [esi + 0x14]
push ecx
call fcn.1005a010
mov eax, dword [edi + 8]
push eax
mov edx, dword [edi + 0x10]
push edx
mov ecx, dword [edi + 0x14]
push ecx
call fcn.1005a010
mov ecx, dword [ebp + ebx + 0x14]
mov eax, dword [ebp + ebx + 0x10]
mov edx, dword [ebp + ebx + 0xc]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x40], eax
push edx
push 0
push ecx
call fcn.10059f60
mov eax, dword [ebp + ebx + 0xc]
push eax
push 0
mov edx, dword [esp + 0x54]
push edx
call fcn.10059f60
lea esp, [esp + 0x48]
mov ecx, dword [esi + 8]
test ecx, ecx
jle 0x10052ad9
mov eax, dword [esi + 0x14]
xor edx, edx
mov dword [esp + 4], ebp
mov ebx, ecx
lea eax, [eax + ecx*4]
mov dword [esp], eax
xor eax, eax
mov ebp, dword [esp]
cmp dword [ebp + eax*4 - 4], 0
jne 0x10052ace
inc edx
lea ecx, [ebx - 1]
add ecx, eax
dec eax
cmp edx, ebx
jb 0x10052abc
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 0x98]
mov edx, dword [edi + 8]
test edx, edx
jle 0x10052b23
mov dword [esp + 0xc], edi
xor eax, eax
mov edi, dword [edi + 0x14]
mov dword [esp + 0x18], esi
mov dword [esp + 4], ebp
lea edi, [edi + edx*4]
mov dword [esp], edi
mov edi, dword [esp + 0xc]
mov esi, eax
mov ebx, dword [esp]
mov ebp, edx
cmp dword [ebx + esi*4 - 4], 0
jne 0x10052b14
inc eax
lea edx, [ebp - 1]
add edx, esi
dec esi
cmp eax, ebp
jb 0x10052b02
mov esi, dword [esp + 0x18]
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 0x98]
test ecx, ecx
jne 0x10052b46
test edx, edx
jne 0x10052b46
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
mov eax, 0xfffffffb
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc
cmp edx, ecx
jle 0x10052b64
test ecx, ecx
je 0x100530bd
mov eax, esi
mov esi, edi
mov edi, eax
mov eax, ecx
mov dword [esp + 8], ecx
mov ecx, edx
mov edx, eax
jmp 0x10052b6c
test edx, edx
je 0x10053056
cmp ecx, 2
jg 0x10052bb0
jl 0x10053008
mov dword [esp + 0x1c], ecx
mov ecx, 2
mov dword [esp + 0xc], edi
push ecx
mov edi, dword [esi + 0x14]
lea eax, [esp + 0x74]
push eax
push ecx
push edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x30], edx
call fcn.10073210
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
lea esp, [esp + 0x10]
test eax, eax
jl 0x10053008
xor eax, eax
mov dword [esp + 4], ebp
mov ebp, edx
mov ebx, ecx
mov eax, dword [esi + 0x14]
cmp ebp, ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], ebx
mov eax, dword [eax + ebx*4 - 4]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], 0
jl 0x10052ec3
mov eax, dword [edi + 0x14]
xor ecx, ecx
mov dword [esp + 0x60], ecx
mov edx, dword [eax + ebp*4 - 4]
mov eax, edx
mov dword [esp + 0x68], edx
or eax, ecx
je 0x10052ec3
or eax, 0xffffffff
sub edx, eax
neg eax
add eax, dword [esp + 0x60]
or edx, eax
je 0x10052ec3
mov eax, 1
mov edx, eax
xor eax, eax
mov dword [esp + 0x54], edx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x5c], edx
mov dword [esp + 0x58], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0xc], edi
mov dword [esp + 0x1c], ebx
mov ebx, eax
mov dword [esp + 0x20], ebp
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x4c]
add esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x68]
adc ebp, dword [esp + 0x58]
add ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x60]
adc edx, dword [esp + 0x44]
push edx
push ecx
push ebp
push esi
call fcn.103b72c0
mov ebp, eax
mov esi, edx
mov eax, dword [esp + 0x4c]
add eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x48]
adc edi, ebx
add ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x60]
adc edx, dword [esp + 0x6c]
push edx
push ecx
push edi
push eax
call fcn.103b72c0
neg eax
neg edx
add eax, ebp
add edx, esi
or eax, edx
jne 0x100532dd
push esi
push ebp
mov edx, dword [esp + 0x4c]
push edx
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.103b7280
mov edi, dword [esp + 0x5c]
sub edi, eax
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x50]
sbb eax, edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x38], eax
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], edx
mov dword [esp + 0x50], edi
mov dword [esp + 0x44], eax
push esi
push ebp
mov ecx, dword [esp + 0x74]
push ecx
mov edx, dword [esp + 0x60]
push edx
call fcn.103b7280
mov ecx, dword [esp + 0x64]
sub ecx, eax
mov eax, ebx
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x64], ebx
sbb eax, edx
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x54], ecx
mov dword [esp + 0x6c], eax
push esi
push ebp
mov ebp, dword [esp + 0x68]
push ebp
mov esi, dword [esp + 0x74]
push esi
call fcn.103b7280
mov ecx, dword [esp + 0x4c]
sub ecx, eax
mov eax, dword [esp + 0x48]
sbb eax, edx
add edi, ecx
mov edx, dword [esp + 0x38]
adc edx, eax
mov ebp, esi
or edi, edx
mov esi, dword [esp + 0x60]
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x48], esi
mov dword [esp + 0x68], ecx
mov dword [esp + 0x60], eax
je 0x100532dd
add ecx, dword [esp + 0x40]
adc eax, dword [esp + 0x3c]
or ecx, eax
jne 0x10052c4e
mov edi, dword [esp + 0xc]
mov eax, ebx
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x64]
or edx, eax
je 0x10052ec3
xor edx, edx
mov ecx, dword [esp + 0x58]
sub ecx, edx
jl 0x10053221
mov edx, ecx
or edx, dword [esp + 0x5c]
je 0x10053221
xor edx, edx
sub eax, edx
jl 0x100531d6
or eax, dword [esp + 0x64]
je 0x100531d6
lea eax, [esp + 8]
push eax
mov eax, dword [esp + 0x60]
push eax
push ebp
mov eax, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x44]
push eax
call fcn.100cbf40
mov eax, dword [edi + 0x14]
lea edx, [esp + 0x1c]
push edx
mov ecx, dword [esp + 0x7c]
push ecx
push ebp
mov edx, dword [esp + 0x30]
push edx
push eax
call fcn.100cbf40
push ebp
mov eax, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x44]
push eax
push eax
call fcn.100cbf90
lea esp, [esp + 0x38]
mov dword [esp + 8], eax
xor eax, eax
mov edx, dword [esp + 0x44]
sub edx, eax
jl 0x10053161
or edx, dword [esp + 0x50]
je 0x10053161
xor eax, eax
mov edx, dword [esp + 0x6c]
sub edx, eax
mov dword [esp + 0x6c], edx
jl 0x10053109
mov eax, edx
or eax, dword [esp + 0x54]
je 0x10053109
mov eax, dword [edi + 0x14]
lea edx, [esp + 8]
push edx
mov ecx, dword [esp + 0x58]
push ecx
push ebp
mov edx, dword [esp + 0x1c]
push edx
push eax
call fcn.100cbf40
push ebp
mov eax, dword [esp + 0x28]
push eax
mov edx, dword [edi + 0x14]
push edx
call fcn.1005a010
mov eax, dword [esi + 0x14]
lea edx, [esp + 0x28]
push edx
mov ecx, dword [esp + 0x74]
push ecx
push ebp
mov edx, dword [esp + 0x3c]
push edx
push eax
call fcn.100cbf40
push ebp
mov eax, dword [edi + 0x14]
push eax
mov eax, dword [esp + 0x4c]
push eax
push eax
call fcn.100cbf90
lea esp, [esp + 0x44]
mov dword [esp + 8], eax
push ebp
mov eax, dword [esp + 0x14]
push eax
mov edx, dword [edi + 0x14]
push edx
call fcn.1005a010
push ebp
mov eax, dword [esp + 0x24]
push eax
mov edx, dword [esi + 0x14]
push edx
call fcn.1005a010
lea esp, [esp + 0x18]
jmp 0x10052f49
mov edx, dword [edi + 0x14]
lea eax, [esp]
push eax
xor eax, eax
push eax
push eax
push ebp
push edx
push ebx
mov eax, dword [esp + 0x4c]
push eax
call fcn.1005a130
mov edx, dword [esp + 0xb4]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + edx + 0xc]
push eax
push 0
mov eax, dword [esp + 0x38]
push eax
call fcn.10059f60
mov eax, dword [esp + 0x28]
push eax
mov edx, dword [esi + 0x14]
push edx
mov eax, dword [esp + 0x44]
push eax
call fcn.1005a010
mov eax, dword [esi + 0xc]
push eax
push 0
mov edx, dword [esi + 0x14]
push edx
call fcn.10059f60
push ebp
mov eax, dword [edi + 0x14]
push eax
mov edx, dword [esi + 0x14]
push edx
call fcn.1005a010
mov eax, dword [edi + 0xc]
push eax
push 0
mov edx, dword [edi + 0x14]
push edx
call fcn.10059f60
push ebp
mov eax, dword [esp + 0x70]
push eax
mov edx, dword [edi + 0x14]
push edx
call fcn.1005a010
lea esp, [esp + 0x64]
mov eax, dword [esi + 0x14]
xor ecx, ecx
mov dword [esp + 0x20], ebp
xor edx, edx
mov dword [esp + 0x18], esi
mov ebp, dword [esp + 0x2c]
lea eax, [eax + ebx*4]
mov esi, dword [esp + 0x30]
cmp dword [eax + edx*4 - 4], 0
jne 0x10052f75
inc ecx
lea ebx, [ebp - 1]
add ebx, edx
dec edx
cmp ecx, esi
jb 0x10052f63
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
test ebp, ebp
jle 0x10052fb5
mov eax, dword [edi + 0x14]
xor ecx, ecx
mov dword [esp + 0x1c], ebx
xor edx, edx
mov dword [esp + 0x18], esi
mov ebx, dword [esp + 0x24]
lea eax, [eax + ebp*4]
mov esi, dword [esp + 0x28]
cmp dword [eax + edx*4 - 4], 0
jne 0x10052fad
inc ecx
lea ebp, [ebx - 1]
add ebp, edx
dec edx
cmp ecx, esi
jb 0x10052f9b
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
cmp ebp, ebx
jle 0x10052fc9
mov eax, esi
mov esi, edi
mov edi, eax
mov eax, ebx
mov dword [esp + 8], ebx
mov ebx, ebp
mov ebp, eax
test ebp, ebp
je 0x10053284
cmp ebx, 2
jg 0x10052bba
jl 0x10052ffd
mov edx, 2
lea eax, [esp + 0x70]
push edx
push eax
push edx
mov ecx, dword [esi + 0x14]
push ecx
call fcn.10073210
lea esp, [esp + 0x10]
test eax, eax
jge 0x10052bba
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 0x98]
mov edi, dword [edi + 0x14]
mov eax, dword [esi + 0x14]
mov edx, dword [edi]
push edx
mov ecx, dword [eax]
push ecx
call fcn.100cbfe0
mov esi, eax
mov eax, dword [ebp + ebx + 0xc]
push eax
push 0
mov edx, dword [ebp + ebx + 0x10]
push edx
call fcn.10059f60
lea esp, [esp + 0x14]
mov eax, dword [ebp + ebx + 0x10]
mov dword [eax], esi
mov dword [ebp + ebx + 8], 1
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
xor eax, eax
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc
mov eax, dword [ebp + ebx + 0xc]
push eax
push 0
mov edx, dword [ebp + ebx + 0x10]
push edx
mov dword [esp + 0x28], ecx
call fcn.10059f60
mov ecx, dword [esp + 0x28]
push ecx
mov esi, dword [esi + 0x14]
push esi
mov eax, dword [ebp + ebx + 0x10]
push eax
call fcn.1005a010
mov ecx, dword [esp + 0x34]
lea esp, [esp + 0x18]
mov dword [ebp + ebx + 8], ecx
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
xor eax, eax
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
mov eax, 0xfffffff5
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc
mov eax, dword [ebp + ebx + 0xc]
push eax
push 0
mov ecx, dword [ebp + ebx + 0x10]
push ecx
mov dword [esp + 0x2c], edx
call fcn.10059f60
mov edx, dword [esp + 0x2c]
push edx
mov edi, dword [edi + 0x14]
push edi
mov eax, dword [ebp + ebx + 0x10]
push eax
call fcn.1005a010
mov edx, dword [esp + 0x38]
lea esp, [esp + 0x18]
mov dword [ebp + ebx + 8], edx
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
xor eax, eax
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc
mov ecx, dword [esp + 0x54]
lea edx, [esp + 8]
push edx
neg ecx
push ecx
push ebp
mov edx, dword [esp + 0x1c]
push edx
mov eax, dword [edi + 0x14]
push eax
call fcn.100cbf40
push ebp
mov eax, dword [esp + 0x28]
push eax
mov edx, dword [edi + 0x14]
push edx
call fcn.1005a010
mov eax, dword [esi + 0x14]
lea edx, [esp + 0x28]
push edx
mov ecx, dword [esp + 0x74]
push ecx
push ebp
mov edx, dword [esp + 0x3c]
push edx
push eax
call fcn.100cbf40
push ebp
mov eax, dword [edi + 0x14]
push eax
mov eax, dword [esp + 0x4c]
push eax
push eax
call fcn.100cc010
jmp 0x10052e94
xor eax, eax
mov edx, dword [esp + 0x6c]
sub edx, eax
jl 0x100531c3
mov ecx, dword [esp + 0x50]
lea edx, [esp + 8]
push edx
neg ecx
push ecx
push ebp
mov edx, dword [esp + 0x1c]
push edx
mov eax, dword [esi + 0x14]
push eax
call fcn.100cbf40
push ebp
mov eax, dword [esp + 0x28]
push eax
mov edx, dword [esi + 0x14]
push edx
call fcn.1005a010
mov eax, dword [edi + 0x14]
lea edx, [esp + 0x28]
push edx
mov ecx, dword [esp + 0x78]
push ecx
push ebp
mov edx, dword [esp + 0x3c]
push edx
push eax
call fcn.100cbf40
push ebp
mov eax, dword [esi + 0x14]
push eax
mov eax, dword [esp + 0x4c]
push eax
push eax
call fcn.100cc010
jmp 0x10052e94
xor eax, eax
mov edx, dword [esp + 0x44]
sub edx, eax
jl 0x10052e43
jmp 0x10053109
lea eax, [esp + 8]
push eax
mov eax, dword [esp + 0x60]
push eax
push ebp
mov eax, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x44]
push eax
call fcn.100cbf40
mov ecx, dword [esp + 0x78]
lea edx, [esp + 0x1c]
push edx
neg ecx
push ecx
push ebp
mov edx, dword [esp + 0x30]
push edx
mov eax, dword [edi + 0x14]
push eax
call fcn.100cbf40
push ebp
mov eax, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x44]
push eax
push eax
call fcn.100cc010
jmp 0x10052e05
xor edx, edx
sub eax, edx
jl 0x10053271
mov eax, dword [edi + 0x14]
lea edx, [esp + 8]
push edx
mov ecx, dword [esp + 0x68]
push ecx
push ebp
mov edx, dword [esp + 0x20]
push edx
push eax
call fcn.100cbf40
mov ecx, dword [esp + 0x70]
lea edx, [esp + 0x1c]
push edx
neg ecx
push ecx
push ebp
mov edx, dword [esp + 0x30]
push edx
mov eax, dword [esi + 0x14]
push eax
call fcn.100cbf40
push ebp
mov eax, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x44]
push eax
push eax
call fcn.100cc010
jmp 0x10052e05
xor eax, eax
mov edx, dword [esp + 0x58]
sub edx, eax
jl 0x10052dc1
jmp 0x100531d6
mov ebp, dword [esp + 4]
mov ecx, ebx
mov ebx, dword [esp + 0x98]
mov eax, dword [ebp + ebx + 0xc]
push eax
push 0
mov edx, dword [ebp + ebx + 0x10]
push edx
mov dword [esp + 0x28], ecx
call fcn.10059f60
mov ecx, dword [esp + 0x28]
push ecx
mov esi, dword [esi + 0x14]
push esi
mov eax, dword [ebp + ebx + 0x10]
push eax
call fcn.1005a010
mov ecx, dword [esp + 0x34]
lea esp, [esp + 0x18]
mov dword [ebp + ebx + 8], ecx
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
xor eax, eax
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc
mov edi, dword [esp + 0xc]
mov eax, ebx
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
jmp 0x10052d87
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.103b6385
mov eax, 0xfffffff8
lea esp, [esp + 0x7c]
pop ebp
pop ebx
pop edi
pop esi
ret 0xc