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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x150
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x98], ecx
mov ecx, dword [ebp + 0x18]
mov edi, dword [edx + 0x10]
mov eax, dword [eax + 0xc8]
mov dword [esp + 0x74], eax
shr eax, 0x10
cmp ax, 5
mov dword [esp + 0xec], eax
lea eax, [ecx + 0x60]
lea ecx, [ecx + 0x58]
cmovae ecx, eax
setae byte [esp + 0x37]
cmp edi, dword [ebp + 8]
call 0x528efd
pop eax
mov dword [esp + 0x118], ecx
mov dword [esp + 0x9c], eax
jle 0x529def
mov ebx, dword [esp + 0x74]
xor ecx, ecx
mov dword [esp + 4], edx
mov eax, ebx
and eax, 0xff00
mov dword [esp + 0x108], eax
mov eax, dword [edx + 8]
cmp byte [eax + 0x21], 8
mov esi, dword [eax + 0x24]
sete cl
add esi, dword [edx]
lea esi, [esi + ecx*8]
mov ecx, dword [eax + 0x1c]
add ecx, dword [eax + 0x18]
mov eax, dword [ebp + 0x10]
sub esi, ecx
movzx ecx, byte [eax + 0xc9]
add esi, 4
mov byte [esp + 0x1b], cl
movzx ecx, word [eax + 0xca]
mov word [esp + 0xda], cx
mov ecx, dword [eax + 0xf4]
mov dword [esp + 0xf0], ecx
mov ecx, dword [eax + 0x100]
mov dword [esp + 0xac], ecx
movzx ecx, bh
mov dword [esp + 0x10c], ecx
mov ecx, dword [eax + 0xf8]
mov dword [esp + 0x94], ecx
movzx ecx, bl
mov ebx, dword [eax + 0xec]
mov eax, dword [eax + 0xe8]
mov dword [esp + 0xe8], ecx
mov dword [esp + 0x110], eax
mov eax, dword [ebp + 0x24]
mov dword [esp + 0xc8], ebx
lea eax, [eax + 1]
mov dword [esp + 0x114], eax
jmp 0x528fff
mov edi, esi
mov eax, dword [edi + 8]
xor edx, edx
cmp byte [eax + 0x21], 8
mov ecx, dword [eax + 0x24]
sete dl
add ecx, dword [edi]
lea esi, [ecx + edx*8]
mov edx, dword [eax + 0x1c]
add edx, dword [eax + 0x18]
sub esi, edx
mov edx, edi
mov edi, dword [edi + 0x10]
add esi, 4
cmp edi, dword [ebp + 8]
jle 0x529def
lea ecx, [esp + 0x48]
mov dword [esp + 0x11c], esi
mov esi, edx
call fcn.0051a6b0
movzx eax, byte [esp + 0x48]
cmp al, 0x4b
jne 0x529e44
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0xf8], edi
test ebx, ebx
je 0x528fd0
movzx eax, word [ebx + 0x60]
mov edi, esi
cmp eax, 0x1d
je 0x529060
cmp eax, 0x2e
jne 0x529100
cmp dword [ebx], 0
je 0x529114
mov eax, dword [ebx + 0xc]
mov ebx, dword [ebx + 4]
jmp 0x529123
cmp dword [ebx], 0
je 0x5291c8
mov ecx, dword [ebx + 0xc]
mov ebx, dword [ebx + 4]
movzx eax, byte [ebp + 0xc]
test ecx, ecx
mov dword [esp + 0xf4], eax
je 0x5291ea
shl ecx, 4
xorps xmm0, xmm0
mov dword [esp + 0x30], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xbc], 0
movaps xmmword [esp + 0x130], xmm0
jmp 0x529463
cmp dword [ebx], 0
je 0x529405
mov eax, dword [ebx + 0xc]
mov ebx, dword [ebx + 4]
jmp 0x529414
mov eax, dword [ebx + 4]
cmp eax, 6
jae 0x529f18
add ebx, 8
mov esi, dword [edi + 8]
lea ecx, [esp + 0x48]
mov edx, edi
push eax
push ebx
push dword [esi + 0x20]
call fcn.005195c0
add esp, 0xc
movzx eax, byte [esp + 0x48]
cmp al, 0x4b
jne 0x529dfe
mov ebx, dword [esp + 0xf8]
nop dword [eax]
cmp dword [edi + 0x10], ebx
jle 0x528fd2
lea ecx, [esp + 0x48]
mov edx, edi
call fcn.0051a6b0
movzx eax, byte [esp + 0x48]
cmp al, 0x4b
jne 0x529dfe
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x529150
cmp dword [eax], 0
je 0x529190
mov esi, dword [eax + 0xc]
mov eax, dword [eax + 4]
jmp 0x52919f
mov esi, dword [eax + 4]
cmp esi, 6
jae 0x529f0e
add eax, 8
mov edx, edi
mov edi, dword [edi + 8]
lea ecx, [esp + 0x48]
push esi
push eax
push dword [edi + 0x20]
call fcn.005195c0
add esp, 0xc
movzx eax, byte [esp + 0x48]
cmp al, 0x4b
jne 0x529dfe
mov edi, dword [esp + 4]
jmp 0x529150
mov ecx, dword [ebx + 4]
cmp ecx, 6
jae 0x529f22
add ebx, 8
movzx eax, byte [ebp + 0xc]
test ecx, ecx
mov dword [esp + 0xf4], eax
jne 0x529082
xorps xmm0, xmm0
mov dword [esp + 0xbc], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x30], 0
movaps xmmword [esp + 0x130], xmm0
mov edi, dword [ebp + 0x1c]
mov ebx, dword [edi + 8]
cmp ebx, dword [edi + 4]
mov eax, ebx
jne 0x529273
mov ecx, edi
mov edx, ebx
call fcn.00515ea0
mov eax, dword [edi + 8]
mov ecx, dword [edi]
movdqa xmm0, xmmword [esp + 0x130]
mov esi, dword [esp + 0x30]
lea edx, [eax + eax*4]
inc eax
cmp dword [esp + 0xbc], 0
movdqu xmmword [ecx + edx*8], xmm0
mov dword [ecx + edx*8 + 0x10], esi
mov esi, dword [esp + 0xd4]
mov dword [ecx + edx*8 + 0x14], esi
mov esi, dword [esp + 0x11c]
mov dword [ecx + edx*8 + 0x18], esi
mov esi, dword [esp + 0x1c]
mov dword [ecx + edx*8 + 0x1c], esi
mov esi, dword [esp + 0x20]
mov dword [ecx + edx*8 + 0x20], esi
mov dword [edi + 8], eax
je 0x529aee
mov eax, dword [esp + 0x118]
mov edx, dword [esp + 0xb8]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub eax, edx
jb 0x529e99
mov esi, dword [ebp + 0x18]
mov edi, dword [esp + 0x110]
mov dword [esp + 0xb8], edx
add ecx, dword [esp + 0xb8]
mov edx, dword [esi + 8]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0xc8]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x54], esi
mov edi, dword [ebp + 0x20]
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x74]
mov word [esp + 0x5c], dx
mov edx, dword [esp + 0xec]
mov word [esp + 0x5e], dx
mov dword [esp + 0x60], ecx
movzx ecx, byte [esp + 0x37]
mov dword [esp + 0x64], eax
mov byte [esp + 0x68], cl
mov byte [esp + 0x6b], 0
mov word [esp + 0x69], 0
jmp 0x529379
mov eax, dword [edi]
mov esi, dword [ebp + 0x24]
lea ecx, [edx + edx*2]
inc edx
movdqu xmmword [eax + ecx*8], xmm1
mov dword [eax + ecx*8 + 0x10], esi
mov dword [eax + ecx*8 + 0x14], ebx
mov dword [edi + 8], edx
lea ecx, [esp + 0x78]
lea edx, [esp + 0x48]
call fcn.0051f410
mov eax, dword [esp + 0x78]
movdqu xmm1, xmmword [esp + 0x80]
mov ecx, eax
and cl, 3
cmp cl, 1
jne 0x5293eb
pshufd xmm2, xmm1, 0xee
pshufd xmm0, xmm1, 0x55
pshufd xmm3, xmm1, 0xff
movd ecx, xmm1
movd esi, xmm2
movd eax, xmm0
movd edx, xmm3
cmp ecx, esi
sbb eax, edx
jae 0x529379
mov edx, dword [edi + 8]
cmp edx, dword [edi + 4]
jne 0x529360
mov ecx, edi
movdqa xmmword [esp + 0x120], xmm1
call fcn.00515b60
movdqa xmm1, xmmword [esp + 0x120]
mov edx, dword [edi + 8]
jmp 0x529360
cmp eax, 2
jne 0x529c0c
movd eax, xmm1
cmp al, 0x4b
je 0x529c0c
jmp 0x529ea3
mov eax, dword [ebx + 4]
cmp eax, 6
jae 0x529f18
add ebx, 8
mov esi, dword [edi + 8]
lea ecx, [esp + 0x48]
mov edx, edi
push eax
push ebx
push dword [esi + 0x20]
call fcn.005195c0
add esp, 0xc
movzx eax, byte [esp + 0x48]
cmp al, 0x4b
je 0x528fd2
jmp 0x529e78
mov edi, esi
nop dword [eax]
mov ecx, dword [esp + 0x120]
add ebx, 0x10
add ecx, 0xfffffff0
je 0x52925a
movsd xmm0, qword [ebx]
movq xmm1, qword [ebx + 8]
mov eax, dword [edi + 8]
mov esi, edi
mov edx, edi
lea edi, [esp + 0x78]
mov dword [esp + 0x120], ecx
lea ecx, [esp + 0x48]
movq qword [esp + 0x80], xmm1
movsd qword [esp + 0x78], xmm0
push edi
push dword [eax + 0x20]
call fcn.00517cb0
add esp, 8
mov eax, dword [esp + 0x48]
mov ecx, eax
xor ecx, 0x2e
or ecx, dword [esp + 0x4c]
je 0x529ace
movzx ecx, word [esp + 0x58]
mov edi, esi
lea edx, [ecx - 3]
cmp edx, 0x56
ja 0x529540
mov ecx, dword [edx*4 + 0x529f34]
add ecx, dword [esp + 0x9c]
jmp ecx
cmp ecx, 0x6e
je 0x529551
cmp ecx, 0x2007
jne 0x529450
lea edi, [esp + 0x78]
lea edx, [esp + 0x48]
mov ecx, edi
call fcn.00519e70
movzx eax, byte [esp + 0x1b]
mov edx, dword [ebp + 0x18]
lea ecx, [esp + 8]
push edi
push dword [esp + 0xf4]
push eax
call fcn.0051de30
add esp, 0xc
cmp byte [esp + 8], 0x4b
jne 0x52944a
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xd4], eax
mov dword [esp + 0x30], ecx
jmp 0x52944a
lea eax, [esp + 0x50]
mov edi, esi
movq xmm0, qword [eax]
movq xmm1, qword [eax + 8]
movq qword [esp + 0x40], xmm1
movq qword [esp + 0x38], xmm0
jmp 0x529c42
mov eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0xb0]
or dword [esp + 0xa8], eax
je 0x529b81
mov eax, ecx
or eax, edx
je 0x529b81
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x24]
cmp dword [esp + 0x28], eax
sbb ecx, dword [esp + 0xc0]
jae 0x529c0c
mov edi, dword [ebp + 0x20]
mov edx, dword [edi + 8]
cmp edx, dword [edi + 4]
jne 0x529b43
mov ecx, edi
call fcn.00515b60
mov edx, dword [edi + 8]
mov eax, dword [edi]
mov esi, dword [esp + 0x24]
lea ecx, [edx + edx*2]
inc edx
mov dword [eax + ecx*8 + 4], esi
mov esi, dword [esp + 0x28]
mov dword [eax + ecx*8], esi
mov esi, dword [esp + 0xc0]
mov dword [eax + ecx*8 + 0xc], esi
mov esi, dword [esp + 0xc4]
mov dword [eax + ecx*8 + 8], esi
mov esi, dword [ebp + 0x24]
mov dword [eax + ecx*8 + 0x10], esi
mov dword [eax + ecx*8 + 0x14], ebx
mov dword [edi + 8], edx
jmp 0x529c0c
mov eax, dword [esp + 0xcc]
or dword [esp + 0xd0], eax
je 0x529c0c
or ecx, edx
je 0x529c0c
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov esi, eax
mov edi, ecx
add esi, dword [esp + 0x100]
adc edi, dword [esp + 0xfc]
cmp eax, esi
mov eax, ecx
sbb eax, edi
jae 0x529c0c
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x120], esi
mov edx, dword [eax + 8]
cmp edx, dword [eax + 4]
jne 0x529bd7
mov ecx, eax
mov esi, eax
call fcn.00515b60
mov edx, dword [esi + 8]
mov eax, esi
mov eax, dword [eax]
mov esi, dword [esp + 0x24]
lea ecx, [edx + edx*2]
inc edx
mov dword [eax + ecx*8 + 4], esi
mov esi, dword [esp + 0x28]
mov dword [eax + ecx*8], esi
mov dword [eax + ecx*8 + 0xc], edi
mov esi, dword [esp + 0x120]
mov edi, dword [ebp + 0x24]
mov dword [eax + ecx*8 + 8], esi
mov dword [eax + ecx*8 + 0x10], edi
mov dword [eax + ecx*8 + 0x14], ebx
mov ecx, dword [ebp + 0x20]
mov dword [ecx + 8], edx
mov edi, dword [esp + 4]
lea ecx, [esp + 0x38]
mov edx, edi
push dword [esp + 0x114]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [esp + 0x10c]
push dword [esp + 0x114]
call fcn.00528eb0
add esp, 0x20
movzx eax, byte [esp + 0x38]
cmp al, 0x4b
je 0x528fd2
jmp 0x529ee6
mov eax, dword [esp + 0x98]
mov byte [eax], 0x4b
jmp 0x529f06
movzx ecx, byte [esp + 0x4b]
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x50]
mov ebx, dword [esp + 0x98]
mov byte [esp + 0x7a], cl
movzx ecx, word [esp + 0x49]
mov ah, byte [esp + 0x7a]
mov word [esp + 0x78], cx
mov ecx, dword [esp + 0x4c]
movzx edi, word [esp + 0x78]
mov byte [ebx + 3], ah
mov word [ebx + 1], di
mov byte [ebx], al
mov dword [ebx + 4], ecx
mov dword [ebx + 0xc], edx
mov dword [ebx + 8], esi
jmp 0x529f06
movzx ecx, byte [esp + 0x4b]
mov edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
mov byte [edi + 3], cl
movzx ecx, word [esp + 0x49]
mov word [edi + 1], cx
mov byte [edi], al
mov dword [edi + 4], edx
mov dword [edi + 0xc], ebx
mov dword [edi + 8], esi
jmp 0x529f06
movsd xmm0, qword [esp + 0x49]
movsd xmm1, qword [esp + 0x50]
mov ecx, dword [esp + 0x98]
movsd qword [ecx + 8], xmm1
movsd qword [ecx + 1], xmm0
mov byte [ecx], al
jmp 0x529f06
xor edx, edx
mov al, 0x13
xor ebx, ebx
xor esi, esi
jmp 0x529eca
mov edx, eax
pshufd xmm0, xmm1, 0x55
pshufd xmm2, xmm1, 0xff
pshufd xmm1, xmm1, 0xee
mov bl, ah
shr edx, 0x10
movd esi, xmm2
movd ecx, xmm1
movd dword [esp + 0xc8], xmm0
mov edi, dword [esp + 0xc8]
mov byte [esp + 0x39], bl
mov word [esp + 0x3a], dx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], esi
lea ecx, [esp + 0x39]
mov edx, dword [esp + 0x98]
movsd xmm1, qword [ecx + 7]
movsd xmm0, qword [ecx]
movsd qword [edx + 8], xmm1
movsd qword [edx + 1], xmm0
mov byte [edx], al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x5a9414
push 5
push esi
jmp 0x529f2a
push 0x5a9414
push 5
push eax
jmp 0x529f2a
push 0x5a9414
push 5
push ecx
call fcn.004287f0
add esp, 0xc
ud2