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

Disassembly:
sub esp, 0x90
push ebx
push ebp
push esi
xor ecx, ecx
xorps xmm0, xmm0
push edi
mov edi, dword [esp + 0xa4]
movlpd qword [esp + 0x3c], xmm0
cmp word [esp + 0xb4], cx
je 0x551104
mov eax, dword [edi]
mov eax, dword [eax]
test byte [eax + 0x50], 0x40
jne 0x551a6a
mov eax, dword [esp + 0xa8]
movzx eax, word [eax]
mov dword [esp + 0x38], eax
cmp eax, 0x3f
ja 0x551a6a
movzx eax, ax
xor edx, edx
bts edx, eax
mov ebp, dword [esp + 0x40]
xor ebx, ebx
mov esi, dword [esp + 0x3c]
cmp eax, 0x20
movlpd qword [esp + 0x78], xmm0
movlpd qword [esp + 0x70], xmm0
cmovae ebx, edx
mov byte [esp + 0x24], 1
xor edx, ebx
mov dword [esp + 0x14], ebp
cmp eax, 0x40
mov dword [esp + 0x18], esi
mov eax, dword [esp + 0xb0]
cmovae ebx, edx
add edx, 0xffffffff
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x24]
adc ebx, 0xffffffff
and eax, 0x803
mov dword [esp + 0x68], ebx
neg eax
sbb eax, eax
neg eax
add eax, 0x182
xor ebx, ebx
movzx eax, ax
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x60], ebx
mov dword [esp + 0x4c], eax
nop word [eax + eax]
mov eax, dword [esp + 0x68]
cmp ebp, eax
ja 0x5519bb
jb 0x5511c8
cmp esi, dword [esp + 0x6c]
jae 0x5519bf
movzx eax, word [esp + 0xb4]
cmp ebx, eax
jg 0x5519ec
test ebx, ebx
jle 0x5511f9
mov edi, dword [esp + 0x4c]
or edi, dword [ecx + 8]
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x50]
or edi, dword [ecx + 0xc]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0xa4]
cmp ebx, eax
jge 0x551223
mov eax, dword [esp + 0xac]
mov eax, dword [eax + 0x18]
mov ebx, dword [eax + ebx*4]
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x2c], ebx
test eax, 0x800
je 0x551235
mov ecx, ebx
jmp 0x55199f
mov ebx, dword [esp + 0xb8]
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x2c], ebx
test dword [ebx + 0x2c], 0x400
jne 0x5519da
and eax, 0x80
mov dword [esp + 0x70], eax
je 0x551253
xor eax, eax
mov word [ebx + 0x1e], ax
movzx eax, byte [ebx + 0x10]
lea ecx, [eax + eax*8]
mov eax, dword [edi + 4]
mov edi, dword [eax + ecx*8 + 0x34]
xor eax, eax
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], eax
cmp word [esp + 0x38], ax
je 0x5513fc
mov ebx, dword [esp + 0xa8]
add ebx, 8
mov dword [esp + 0x1c], ebx
xor ebp, ebp
xor edx, edx
bts ebp, eax
cmp eax, 0x20
cmovae edx, ebp
xor ebp, edx
cmp eax, 0x40
mov ecx, ebp
cmovae edx, ebp
and ecx, esi
mov eax, edx
mov dword [esp + 0x48], edx
and eax, dword [esp + 0x14]
or ecx, eax
jne 0x5513d3
mov esi, dword [ebx]
test esi, esi
je 0x5513cf
nop dword [eax]
mov eax, dword [esi + 4]
test eax, 0x82000
je 0x5512e5
test eax, 0x80000
je 0x5512d9
mov eax, dword [esi + 0x14]
mov esi, dword [eax + 8]
jmp 0x5512dc
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x5512c0
jmp 0x5513cf
mov al, byte [esi]
cmp al, 0xa7
je 0x5512f3
cmp al, 0xa9
jne 0x5513cf
cmp dword [esi + 0x1c], edi
jne 0x5513cf
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x4c]
movzx eax, ax
not ecx
push 0
push eax
mov eax, dword [esp + 0x58]
not eax
push eax
movsx eax, word [esi + 0x20]
push ecx
push eax
mov eax, dword [esp + 0xb8]
add eax, 0x50
push edi
push eax
call fcn.0053ebf0
mov edi, eax
add esp, 0x1c
test edi, edi
je 0x5513cb
movzx ebx, word [edi + 0xc]
cmp ebx, 1
jne 0x551361
mov eax, dword [esp + 0x2c]
xor ecx, ecx
movzx edx, word [eax + 0x30]
test edx, edx
je 0x55135d
mov eax, dword [eax + 0x38]
cmp edi, dword [eax]
je 0x55135d
inc ecx
add eax, 4
cmp ecx, edx
jl 0x551351
cmp ecx, edx
jge 0x5513cb
test bl, 0x82
je 0x5513af
cmp word [esi + 0x20], 0
jl 0x5513af
mov eax, dword [esp + 0xa4]
mov esi, dword [eax]
mov eax, dword [esp + 0x1c]
push dword [eax]
push esi
call fcn.00508540
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x551390
mov eax, dword [esi]
mov ebx, dword [eax + 8]
push dword [edi]
push esi
call fcn.00508980
add esp, 8
test eax, eax
je 0x5513cb
push dword [eax]
push dword [ebx]
call fcn.00526840
add esp, 8
test eax, eax
jne 0x5513cb
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x34]
or esi, ebp
mov ebp, dword [esp + 0x14]
or ebp, dword [esp + 0x48]
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ebp
jmp 0x5513d7
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
inc eax
add dword [esp + 0x1c], 0x14
mov ebx, dword [esp + 0x1c]
movzx ecx, dx
mov dword [esp + 0x30], eax
cmp eax, ecx
jl 0x551284
mov ebx, dword [esp + 0x2c]
mov eax, dword [ebx + 0x2c]
test eax, 0x1000
jne 0x55182e
test eax, 0x100
je 0x551428
mov dword [esp + 0x44], 0
mov ecx, 1
mov dword [esp + 0x48], 0
jmp 0x551464
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x44], edx
test edx, edx
je 0x551a6a
test byte [edx + 0x38], 4
jne 0x551a6a
cmp byte [edx + 0x36], 0
movzx ecx, word [edx + 0x32]
mov dword [esp + 0x48], ecx
movzx ecx, word [edx + 0x34]
je 0x55145f
mov byte [esp + 0x24], 1
test eax, 0x8000
je 0x551464
mov byte [esp + 0x24], 0
xor al, al
xor edi, edi
mov byte [esp + 0x2b], al
mov byte [esp + 0x2a], al
mov dword [esp + 0x30], eax
movzx eax, cx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x3c], eax
test eax, eax
je 0x55182e
mov dword [esp + 0x54], edi
nop dword [eax + eax]
movzx esi, word [ebx + 0x18]
mov dl, 1
mov byte [esp + 0x13], dl
cmp edi, esi
jge 0x5514fe
movzx eax, word [ebx + 0x32]
cmp edi, eax
jl 0x5514fe
mov ebx, dword [ebx + 0x38]
mov eax, dword [esp + 0x64]
mov edi, dword [ebx + edi*4]
movzx ecx, word [edi + 0xc]
and eax, ecx
test ax, ax
je 0x5514d1
test ecx, 0x180
je 0x55180d
mov byte [esp + 0x24], 0
jmp 0x55180d
test dl, cl
je 0x5514fa
mov eax, dword [esp + 0x1c]
mov edi, dword [edi]
lea edx, [eax + 1]
cmp edx, esi
jge 0x5514f6
lea ecx, [eax + 1]
lea ecx, [ebx + ecx*4]
mov eax, dword [ecx]
cmp dword [eax], edi
je 0x55152d
inc edx
add ecx, 4
cmp edx, esi
jl 0x5514e8
mov dl, byte [esp + 0x13]
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
test ebx, ebx
je 0x551535
mov eax, dword [ebx + 4]
movsx ebp, word [eax + edi*2]
mov eax, dword [ebx + 0x1c]
mov cl, byte [edi + eax]
mov eax, dword [ebx + 0xc]
and cl, 1
mov byte [esp + 0x23], cl
movsx eax, word [eax + 0x20]
cmp ebp, eax
mov eax, 0xffffffff
cmove ebp, eax
jmp 0x55153d
xor dl, dl
mov byte [esp + 0x13], dl
jmp 0x5514fa
or ebp, 0xffffffff
mov byte [esp + 0x23], 0
mov eax, dword [esp + 0x24]
test al, al
je 0x551574
test ebp, ebp
js 0x551565
cmp edi, esi
jl 0x551574
mov eax, dword [ebx + 0xc]
mov ecx, ebp
add ecx, ecx
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
jne 0x551574
mov byte [esp + 0x24], 0
jmp 0x551574
xor ecx, ecx
movzx eax, al
cmp ebp, 0xfffffffe
cmove eax, ecx
mov dword [esp + 0x24], eax
xor edi, edi
test dl, dl
je 0x55170b
mov ebx, dword [esp + 0xa8]
add ebx, 8
nop dword [eax + eax]
mov ecx, dword [esp + 0x38]
movzx eax, cx
cmp edi, eax
jge 0x55170b
xor esi, esi
mov eax, edi
bts esi, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, esi
xor esi, edx
cmp eax, 0x40
mov ecx, esi
mov dword [esp + 0x80], esi
cmovae edx, esi
and ecx, dword [esp + 0x18]
mov eax, edx
mov dword [esp + 0x78], edx
and eax, dword [esp + 0x14]
or ecx, eax
jne 0x5516fc
mov eax, dword [ebx]
test eax, eax
je 0x5516fc
nop
mov ecx, dword [eax + 4]
test ecx, 0x82000
je 0x551607
test ecx, 0x80000
je 0x5515fb
mov ecx, dword [eax + 0x14]
mov eax, dword [ecx + 8]
jmp 0x5515fe
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x5515e0
jmp 0x5516fc
mov cl, byte [esp + 0xb0]
and cl, 0xc0
neg cl
sbb cl, cl
and byte [esp + 0x13], cl
cmp ebp, 0xffffffff
jl 0x551643
mov cl, byte [eax]
cmp cl, 0xa7
je 0x55162e
cmp cl, 0xa9
jne 0x5516fc
mov ecx, dword [esp + 0x34]
cmp dword [eax + 0x1c], ecx
jne 0x5516fc
movsx eax, word [eax + 0x20]
cmp eax, ebp
jmp 0x5516b6
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x54]
mov ecx, dword [ecx + 0x28]
mov edx, dword [ecx + edx + 8]
test edx, edx
je 0x551682
nop word [eax + eax]
mov ecx, dword [edx + 4]
test ecx, 0x82000
je 0x551682
test ecx, 0x80000
je 0x55167b
mov ecx, dword [edx + 0x14]
mov edx, dword [ecx + 8]
jmp 0x55167e
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x551660
mov ecx, dword [eax + 4]
test ecx, 0x82000
je 0x5516a4
test ecx, 0x80000
je 0x55169d
mov ecx, dword [eax + 0x14]
mov eax, dword [ecx + 8]
jmp 0x5516a0
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x551682
push dword [esp + 0x34]
push edx
push eax
push 0
call fcn.00508710
add esp, 0x10
test eax, eax
jne 0x5516fc
cmp ebp, 0xffffffff
je 0x551743
mov eax, dword [esp + 0xa4]
push dword [ebx]
mov esi, dword [eax]
push esi
call fcn.00508540
mov ecx, eax
add esp, 8
test ecx, ecx
jne 0x5516e0
mov eax, dword [esi]
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x1c]
mov eax, dword [eax + 0x20]
push dword [eax + edx*4]
push dword [ecx]
call fcn.00526840
add esp, 8
test eax, eax
je 0x55173c
inc edi
add ebx, 0x14
cmp byte [esp + 0x13], 0
jne 0x551590
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x55171e
mov eax, dword [esp + 0x48]
movzx eax, ax
cmp ecx, eax
jge 0x551723
mov byte [esp + 0x24], 0
mov ebp, dword [esp + 0x14]
cmp byte [esp + 0x30], 0
je 0x55182e
mov byte [esp + 0x24], 1
jmp 0x551839
mov esi, dword [esp + 0x80]
cmp word [esp + 0x70], 0
mov ebx, dword [esp + 0x1c]
je 0x55175a
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 1]
mov word [ecx + 0x1e], ax
test byte [esp + 0xb0], 0x40
jne 0x5517bf
mov ecx, dword [esp + 0xa8]
lea eax, [edi + edi*4]
mov al, byte [ecx + eax*4 + 0x10]
and al, 1
cmp byte [esp + 0x2b], 0
je 0x551789
mov cl, byte [esp + 0x23]
xor cl, byte [esp + 0x2a]
cmp cl, al
jne 0x55170b
jmp 0x5517bf
mov dh, al
xor dh, byte [esp + 0x23]
mov byte [esp + 0x2a], dh
je 0x5517ba
mov eax, dword [esp + 0x60]
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [esp + 0xbc]
cmovae edx, ecx
or dword [eax], ecx
or dword [eax + 4], edx
mov byte [esp + 0x2b], 1
mov ecx, dword [esp + 0xa8]
lea eax, [edi + edi*4]
test byte [ecx + eax*4 + 0x10], 2
je 0x5517e7
mov ecx, dword [esp + 0x2c]
movzx eax, word [ecx + 0x18]
cmp ebx, eax
jne 0x55170b
or dword [ecx + 0x2c], 0x80000
mov eax, dword [esp + 0x30]
cmp ebp, 0xffffffff
mov ebp, dword [esp + 0x14]
mov ecx, 1
movzx eax, al
cmove eax, ecx
or dword [esp + 0x18], esi
or ebp, dword [esp + 0x78]
mov dword [esp + 0x30], eax
mov dword [esp + 0x14], ebp
mov edi, dword [esp + 0x1c]
add dword [esp + 0x54], 0x14
inc edi
mov dword [esp + 0x1c], edi
cmp edi, dword [esp + 0x3c]
jge 0x551727
mov ebx, dword [esp + 0x2c]
jmp 0x551490
cmp byte [esp + 0x24], 0
je 0x5519d4
mov ecx, dword [esp + 0x2c]
xor ebp, ebp
mov eax, dword [esp + 0x58]
or eax, dword [ecx + 8]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x5c]
or eax, dword [ecx + 0xc]
mov dword [esp + 0x5c], eax
cmp word [esp + 0x38], bp
je 0x551993
mov esi, dword [esp + 0xa8]
add esi, 8
mov dword [esp + 0x30], esi
nop
xor edx, edx
xor ecx, ecx
mov eax, ebp
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x18]
and ecx, dword [esp + 0x14]
or edx, ecx
jne 0x551976
mov ecx, dword [esp + 0xa4]
mov esi, dword [esi]
add ecx, 0x1f0
test esi, esi
je 0x5518e0
cmp byte [esi], 0xa7
jne 0x5518c7
test byte [esi + 4], 0x20
jne 0x5518c7
push dword [esi + 0x1c]
push ecx
call fcn.0053ec90
add esp, 8
mov edi, eax
mov ebx, edx
jmp 0x5518f1
test dword [esi + 4], 0x810000
jne 0x5518e0
push esi
push ecx
call fcn.0053ea90
add esp, 8
mov edi, eax
mov ebx, edx
jmp 0x5518f1
xorps xmm0, xmm0
movlpd qword [esp + 0x3c], xmm0
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x40]
mov eax, edi
or eax, ebx
jne 0x551945
mov dword [esp + 0x88], fcn.004d6870
mov eax, 1
mov word [esp + 0x98], ax
mov dword [esp + 0x8c], 0x524e20
mov dword [esp + 0x9c], 0
test esi, esi
je 0x551945
lea eax, [esp + 0x84]
push esi
push eax
call fcn.00539e50
add esp, 8
cmp word [esp + 0x98], 0
je 0x551976
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x5c]
not ecx
not eax
and ecx, edi
and eax, ebx
or ecx, eax
jne 0x551976
mov eax, ebp
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
or dword [esp + 0x18], ecx
or dword [esp + 0x14], edx
mov ecx, dword [esp + 0x38]
inc ebp
add dword [esp + 0x30], 0x14
mov esi, dword [esp + 0x30]
movzx eax, cx
cmp ebp, eax
jl 0x551870
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x60]
mov edi, dword [esp + 0xa4]
inc ebx
mov dword [esp + 0x60], ebx
test dl, dl
jne 0x5511b0
mov eax, dword [esp + 0x68]
cmp esi, dword [esp + 0x6c]
jne 0x5519ec
cmp ebp, eax
jne 0x5519ec
mov al, byte [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret
mov ecx, dword [esp + 0x2c]
jmp 0x551997
cmp byte [ebx + 0x20], 0
je 0x5519ec
and eax, 0x280
cmp eax, 0x80
jne 0x5519c5
test dl, dl
jne 0x551a5d
mov eax, dword [esp + 0x38]
movzx ebx, ax
dec ebx
test ebx, ebx
jle 0x551a6a
nop dword [eax]
cmp ebx, 0x40
jge 0x551a24
xor ecx, ecx
xor edx, edx
mov eax, ebx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
adc edx, 0xffffffff
jmp 0x551a35
xorps xmm0, xmm0
movlpd qword [esp + 0x3c], xmm0
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov eax, ecx
and eax, esi
mov esi, edx
and esi, ebp
cmp eax, ecx
jne 0x551a45
cmp esi, edx
je 0x551a50
dec ebx
test ebx, ebx
jle 0x551a6a
mov esi, dword [esp + 0x18]
jmp 0x551a00
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
add esp, 0x90
ret
pop edi
pop esi
pop ebp
or al, 0xff
pop ebx
add esp, 0x90
ret
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x90
ret