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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x9c
mov ebp, dword [esp + 0xb0]
mov dword [esp + 0x48], ecx
mov ecx, 0x5b4600
mov dword [esp + 0x6c], 0
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x3c], eax
call fcn.00549c90
mov ecx, 0x5b4600
movsx ebx, ax
call fcn.00549cd0
mov ecx, 0x5b4600
cwde
add eax, ebx
mov dword [esp + 0x50], eax
call fcn.00549ba0
mov ecx, 0x5b4600
mov word [esp + 0x40], ax
fild word [esp + 0x40]
fstp qword [esp + 0x70]
call fcn.00549c10
fstp qword [esp + 0x80]
fld qword [esp + 0x80]
fstp qword [esp]
call fcn.0057e990
mov dword [esp + 0x40], 1
fstp qword [esp + 0x78]
fld qword [esp + 0x70]
fmul qword [esp + 0x78]
fstp qword [esp + 0x88]
fld dword [0x5abb64]
fld qword [esp + 0x88]
fcomi st(1)
fstp st(1)
jae 0x551388
fld dword [0x5abb68]
fxch st(1)
xor eax, eax
fcompi st(1)
fstp st(0)
seta al
sub eax, 1
mov dword [esp + 0x40], eax
jmp 0x55138a
fstp st(0)
movsx eax, word [0x5b8fd6]
cmp eax, dword [0x59ad38]
jl 0x5513d8
mov edi, 0x5b8fc8
mov esi, 0x5b8f80
mov eax, dword [esp + 0x40]
mov ecx, edi
mov ebx, edi
mov dword [esp], eax
call fcn.00438d30
mov eax, dword [0x59ad38]
sub esp, 4
cmp esi, edi
je 0x5513d0
movsx ecx, word [ebx - 0xa]
sub edi, 0x18
cmp ecx, eax
jge 0x5513a3
lea esi, [esi]
add eax, 1
mov dword [0x59ad38], eax
mov eax, dword [0x5b39c8]
mov byte [esp + 0x47], 1
cmp word [eax + 0x6a], 0x101
je 0x5513fe
mov ecx, dword [0x5b3a00]
mov byte [esp + 0x47], 0
cmp ecx, 7
jbe 0x5519d0
mov edx, dword [esp + 0x3c]
mov edi, 1
test edx, edx
jle 0x551489
lea esi, [esi]
nop
imul eax, edi, 0xcccccccd
add eax, 0x33333333
ror eax, 1
cmp eax, 0x19999999
jbe 0x5519b8
cmp dword [ebp + 0xc], edi
jl 0x551a5c
lea ebx, [edi - 1]
imul ebx, dword [ebp + 0x10]
add ebx, dword [ebp + 0x19]
cmp byte [ebx], 0xc
ja case.default.0x551443
movzx eax, byte [ebx]
jmp dword [eax*4 + 0x5abad8]
movsx eax, word [ebx + 2]
test eax, eax
jle 0x551a65
cmp eax, dword [0x5b4e90]
jg 0x551a65
sub eax, 1
imul eax, dword [0x5b4e94]
mov edx, dword [0x5b4e9d]
mov ecx, dword [edx + eax]
mov eax, dword [ecx]
call dword [eax + 8]
add edi, 1
cmp dword [esp + 0x3c], edi
jge 0x551410
add esp, 0x9c
pop ebx
pop esi
pop edi
pop ebp
ret 8
movsx eax, word [ebx + 2]
test eax, eax
jle 0x551a00
cmp eax, dword [0x5b4f0c]
jg 0x551a00
lea ecx, [eax - 1]
imul ecx, dword [0x5b4f10]
add ecx, dword [0x5b4f19]
call fcn.004bfa10
jmp case.default.0x551443
movzx eax, word [ebx + 6]
movsx esi, word [ebx + 8]
mov ecx, 0x5b5dc0
mov word [esp + 0x4c], ax
movsx eax, word [ebx + 2]
mov dword [esp], eax
call fcn.00491ff0
sub esp, 4
mov ecx, eax
movsx ebx, word [esp + 0x4c]
mov dword [esp + 8], 2
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.00492220
sub esp, 0xc
mov edx, dword [esp + 0x48]
mov eax, dword [edx + 4]
imul eax, esi
add eax, ebx
imul eax, eax, 0xe
add eax, dword [edx + 0xc]
movsx eax, byte [eax + 0xb]
test eax, eax
jle case.default.0x551443
cmp byte [esp + 0x47], 0
je case.default.0x551443
movsx edx, word [0x5cca2a]
mov ecx, ebx
shl esi, 5
shl ecx, 5
sub ecx, edx
movsx edx, word [0x5cca28]
sub esi, edx
cmp esi, 0x200
ja case.default.0x551443
cmp ecx, 0x220
ja case.default.0x551443
movsx eax, byte [eax + 0x5b512b]
add esi, 0x38
mov dword [esp + 8], ecx
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
mov eax, dword [0x5b9d6c]
mov eax, dword [eax + 0x10]
mov dword [esp + 4], eax
mov eax, dword [0x5b9d70]
mov dword [esp], eax
call fcn.00565790
jmp case.default.0x551443
movsx eax, word [ebx + 2]
test eax, eax
jle 0x551a65
cmp eax, dword [0x5b4fd0]
jg 0x551a65
sub eax, 1
imul eax, dword [0x5b4fd4]
mov edx, dword [0x5b4fdd]
mov ecx, dword [edx + eax]
mov eax, dword [ecx]
call dword [eax + 8]
jmp case.default.0x551443
mov dword [esp + 4], 0
movsx eax, byte [ebx + 3]
mov ecx, 0x5b3cc0
mov dword [esp], eax
call fcn.00453bc0
mov ecx, 0x5b6560
mov esi, eax
movzx eax, byte [ebx + 2]
sub esp, 8
mov dword [esp], eax
call fcn.00548ee0
sub esp, 4
mov ecx, eax
mov dword [esp + 8], esi
movsx eax, word [ebx + 8]
mov dword [esp + 4], eax
movsx eax, word [ebx + 6]
mov dword [esp], eax
call fcn.005491c0
sub esp, 0xc
jmp case.default.0x551443
movsx ecx, word [ebx + 2]
lea eax, [ecx*4]
add ecx, 0x14
cdq
idiv ecx
cmp byte [esp + eax + 0x6c], 0
mov esi, eax
jne 0x5516a2
mov byte [esp + eax + 0x6c], 1
cmp dword [esp + 0xb4], 1
lea eax, [eax + eax*2]
lea ecx, [eax*8 + 0x5b8f80]
jne 0x5519f0
mov eax, dword [esp + 0x50]
test eax, eax
jne 0x551a38
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], ecx
mov dword [esp], eax
call fcn.00438d30
sub esp, 4
mov dword [esp], 0xe3
mov ecx, dword [esp + 0x4c]
call fcn.00438f30
sub esp, 4
mov ecx, dword [esp + 0x4c]
call fcn.00439000
movsx edx, word [ebx + 6]
mov eax, esi
movsx ebx, word [ebx + 8]
not eax
mov ecx, edx
mov dword [esp + 0x4c], edx
shl ecx, 5
mov dword [esp + 0x54], ebx
add ebx, 0xd
lea ecx, [ecx + eax*4]
movsx eax, word [0x5cca2a]
sub ecx, eax
movzx eax, word [0x5cca28]
mov edx, ecx
mov ecx, dword [esp + 0x4c]
add ecx, 0xb
imul ecx, ebx
mov ebx, ecx
sar ebx, 0x1f
shr ebx, 0x1c
add ecx, ebx
and ecx, 0xf
sub ecx, ebx
and ecx, 0xfffffffe
lea ebx, [edx + ecx - 6]
lea ecx, [ebx + esi*8 + 0x27]
mov dword [esp + 0x58], ecx
test ecx, ecx
js case.default.0x551443
cmp ebx, 0x23f
jg case.default.0x551443
lea ecx, [esi*4]
mov edx, esi
sub edx, ecx
mov ecx, dword [esp + 0x54]
shl edx, 2
shl ecx, 5
mov dword [esp + 0x5c], edx
lea ecx, [edx + ecx + 4]
mov edx, ecx
movsx ecx, ax
mov eax, edx
mov edx, dword [esp + 0x4c]
sub eax, ecx
mov ecx, eax
mov eax, dword [esp + 0x54]
add edx, 0xd
add eax, 0x11
imul eax, edx
cdq
shr edx, 0x1c
add eax, edx
and eax, 0xf
sub eax, edx
mov edx, ecx
and eax, 0xfffffffe
sub edx, eax
mov eax, 0x1c
sub eax, dword [esp + 0x5c]
lea eax, [edx + eax - 1]
test eax, eax
js case.default.0x551443
cmp edx, 0x21f
jg case.default.0x551443
lea ecx, [esi + esi*2]
mov esi, dword [ecx*8 + 0x5b8f84]
mov dword [esp + 0x4c], esi
lea esi, [edx + 0x38]
test ebx, ebx
js 0x5517a9
cmp dword [esp + 0x58], 0x23f
jg 0x5517a9
test edx, edx
js 0x5517a9
cmp eax, 0x21f
jle 0x551a17
mov ecx, 0x21f
mov dword [esp + 0xc], esi
cmp eax, ecx
mov dword [esp + 8], ebx
cmovg eax, ecx
mov ecx, dword [esp + 0x58]
sub eax, edx
mov dword [esp + 0x20], eax
mov eax, 0x23f
cmp ecx, eax
cmovle eax, ecx
sub eax, ebx
mov dword [esp + 0x1c], eax
xor eax, eax
test edx, edx
cmovns eax, edx
sub eax, edx
mov dword [esp + 0x18], eax
xor eax, eax
test ebx, ebx
cmovns eax, ebx
sub eax, ebx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x10], eax
mov eax, dword [0x5b9d6c]
mov eax, dword [eax + 0x10]
mov dword [esp + 4], eax
mov eax, dword [0x5b9d70]
mov dword [esp], eax
call fcn.00563800
jmp case.default.0x551443
movsx eax, word [ebx + 8]
movsx ecx, word [ebx + 2]
mov dword [esp + 4], eax
movsx eax, word [ebx + 6]
add ecx, 0xfffffff
shl ecx, 4
add ecx, dword [0x5b66a8]
mov dword [esp], eax
call fcn.004b0230
sub esp, 8
jmp case.default.0x551443
movsx eax, word [ebx + 2]
test eax, eax
jle 0x551a10
cmp eax, dword [0x5b522c]
jg 0x551a10
sub eax, 1
imul eax, dword [0x5b5230]
mov edx, dword [0x5b5239]
mov ecx, dword [edx + eax]
mov eax, dword [esp + 0xb4]
mov dword [esp], eax
call fcn.004ff4c0
sub esp, 4
jmp case.default.0x551443
movsx eax, word [ebx + 2]
test eax, eax
jle 0x551a65
cmp eax, dword [0x5b504c]
jg 0x551a65
sub eax, 1
imul eax, dword [0x5b5050]
mov edx, dword [0x5b5059]
mov esi, dword [esp + 0xb4]
mov ecx, dword [edx + eax]
mov eax, dword [ecx]
mov dword [esp], esi
call dword [eax + 0x3c]
sub esp, 4
jmp case.default.0x551443
movsx eax, word [ebx + 2]
test eax, eax
jle 0x551a65
cmp eax, dword [0x5b52d0]
jg 0x551a65
sub eax, 1
imul eax, dword [0x5b52d4]
mov edx, dword [0x5b52dd]
mov ecx, dword [edx + eax]
mov eax, dword [ecx]
call dword [eax + 8]
jmp case.default.0x551443
movsx eax, word [ebx + 2]
mov ecx, 0x5b5000
mov dword [esp], eax
call fcn.00432210
sub esp, 4
mov ecx, eax
mov eax, dword [esp + 0xb4]
mov dword [esp], eax
call fcn.004320b0
sub esp, 4
jmp case.default.0x551443
movsx eax, word [ebx + 2]
test eax, eax
jle 0x551a65
cmp eax, dword [0x5b5310]
jg 0x551a65
sub eax, 1
imul eax, dword [0x5b5314]
mov edx, dword [0x5b531d]
mov ecx, dword [edx + eax]
mov eax, dword [ecx]
call dword [eax + 0x50]
jmp case.default.0x551443
movsx eax, word [ebx + 2]
test eax, eax
jle 0x551a65
cmp eax, dword [0x5b5310]
jg 0x551a65
sub eax, 1
imul eax, dword [0x5b5314]
mov edx, dword [0x5b531d]
mov ecx, dword [edx + eax]
mov eax, dword [ecx]
call dword [eax + 8]
jmp case.default.0x551443
mov ecx, 0x5b9060
call fcn.004e8950
jmp 0x551428
mov eax, 0xffffff6d
sar eax, cl
and eax, 1
xor eax, 1
mov byte [esp + 0x47], al
jmp 0x5513fe
call fcn.004390d0
jmp 0x5516a2
xor ecx, ecx
jmp 0x5514c8
xor ecx, ecx
jmp 0x55187b
mov eax, dword [esp + 0x4c]
mov dword [esp + 4], esi
mov ecx, 0x5b9d6c
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.00546300
sub esp, 0xc
jmp case.default.0x551443
mov dword [esp + 4], 0xffffffff
mov dword [esp], 0xffffffff
mov dword [esp + 0x4c], ecx
call fcn.00439320
sub esp, 8
mov ecx, dword [esp + 0x4c]
jmp 0x551673
movzx eax, byte [pe_dos_header]
ud2
mov eax, dword [pe_dos_header]
ud2