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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xc8
mov eax, dword [ecx + 0xc]
push esi
push edi
mov edi, edx
mov dword [esp + 0x3c], eax
mov dword [esp + 0xc], edi
mov dword [esp + 0x14], ecx
movzx eax, word [edi]
cmp ax, 0x40
jle 0x159f0d0
push 0x40
push 0xf94424
push ecx
call fcn.01573480
add esp, 0xc
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [ecx]
movsx esi, ax
shl esi, 6
add esi, 0x27
mov dword [esp + 0x2c], ecx
and esi, 0xfffffff8
lea edx, [esi + 0x264]
call fcn.01571810
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x10], eax
cmp byte [ecx + 0x1e], 0
jne 0x159f502
movsx ecx, word [edi]
mov dword [eax + 0x18], ecx
mov ecx, dword [esp + 0x14]
mov dword [eax], ecx
mov ecx, dword [esp + 0x3c]
mov dword [eax + 8], edi
call fcn.0157f760
mov ecx, dword [esp + 0x10]
add esi, ecx
push 0x104
push 0
mov dword [esp + 0x3c], esi
mov dword [ecx + 0x14], eax
mov eax, dword [ebp + 0x10]
mov word [ecx + 4], ax
lea eax, [esi + 0x160]
push eax
mov dword [ecx + 0x1c], esi
mov dword [esp + 0x60], eax
call fcn.015bd6e0
mov edx, dword [esp + 0x20]
lea eax, [esi + 0x160]
add esp, 0xc
mov ecx, esi
push eax
call fcn.0159c170
mov esi, dword [ebp + 8]
add esp, 4
mov ecx, dword [esp + 0x14]
mov edx, esi
call fcn.0158b680
mov ecx, dword [esp + 0x34]
mov edx, esi
push 0x45
call fcn.0159c310
add esp, 4
test esi, esi
je 0x159f1a7
cmp word [edi], 0
je 0x159f190
mov ecx, esi
call fcn.015896c0
test eax, eax
je 0x159f1a7
mov eax, dword [esp + 0x10]
mov edx, esi
mov ecx, dword [esp + 0x14]
push 8
push dword [eax + 0x14]
call fcn.0158ba70
add esp, 8
xor eax, eax
xor esi, esi
cmp ax, word [edi]
jge 0x159f1ff
add edi, 0x14
mov edx, dword [edi + 0xc]
mov ecx, dword [esp + 0x54]
call fcn.0159c3a0
mov eax, dword [edi]
test eax, eax
je 0x159f1ec
test byte [eax + 0x22], 0x10
je 0x159f1ec
xor ecx, ecx
mov eax, esi
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [esp + 0x34]
cmovae edx, ecx
or dword [eax + 8], ecx
or dword [eax + 0xc], edx
mov eax, dword [esp + 0xc]
inc esi
add edi, 0x38
movsx eax, word [eax]
cmp esi, eax
jl 0x159f1b3
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x34]
mov ecx, edi
call fcn.0159c750
mov eax, dword [esp + 0x2c]
cmp byte [eax + 0x1e], 0
jne 0x159f4fe
mov edx, dword [esp + 0xc]
xor ecx, ecx
mov edi, dword [esp + 0x10]
or eax, 0xffffffff
add edi, 0x20
mov dword [esp + 0x20], eax
or esi, 0xffffffff
mov dword [esp + 0x18], 0xffffffff
mov dword [esp + 0x24], esi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x44], edi
cmp cx, word [edx]
jge 0x159f519
xorps xmm0, xmm0
mov dword [esp + 0x50], 1
movlpd qword [esp + 0x70], xmm0
or edi, 0xffffffff
movlpd qword [esp + 0x78], xmm0
movsd xmm0, qword [0xf949e8]
mov dword [esp + 0x40], edi
movsd qword [esp + 0x60], xmm0
jmp 0x159f28a
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
test edi, edi
jns 0x159f438
cmp dword [esp + 0x50], 0
je 0x159f2b0
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x58]
jmp 0x159f2b4
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], eax
mov esi, ecx
lea eax, [ecx*8]
sub eax, ecx
inc eax
lea edi, [edx + eax*8]
movsx eax, word [edx]
cmp ecx, eax
jge 0x159f429
mov edx, dword [esp + 0x10]
mov eax, ecx
add edx, 0x5c
shl eax, 6
add eax, edx
mov edx, dword [esp + 0xc]
mov dword [esp + 0x58], eax
nop dword [eax + eax]
mov al, byte [edi + 0x15]
and al, 0xa
mov byte [esp + 0x1f], al
cmp esi, ecx
je 0x159f305
test al, al
jne 0x159f429
mov edx, dword [edi + 0x18]
mov ecx, dword [esp + 0x54]
call fcn.0159c360
and eax, dword [esp + 0x20]
and edx, dword [esp + 0x24]
or eax, edx
jne 0x159f333
mov ecx, dword [esp + 0x38]
cmp esi, ecx
jne 0x159f40b
inc ecx
mov dword [esp + 0x38], ecx
jmp 0x159f40b
cmp dword [esp + 0x30], 0
jne 0x159f345
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x159f345
mov ecx, dword [eax]
jmp 0x159f347
xor ecx, ecx
mov eax, dword [edi + 0xc]
mov edx, dword [esp + 0x34]
test byte [eax + 0x22], 0x10
lea eax, [esp + 0xa0]
je 0x159f378
push dword [esp + 0x58]
push eax
push ecx
push dword [esp + 0x54]
mov ecx, dword [esp + 0x24]
push dword [esp + 0x5c]
push edi
call fcn.0159d9a0
add esp, 0x18
jmp 0x159f38f
push eax
push ecx
push dword [esp + 0x50]
mov ecx, dword [esp + 0x20]
push dword [esp + 0x58]
push edi
call fcn.0159dbb0
add esp, 0x14
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0xc4]
and ecx, dword [esp + 0x20]
and eax, dword [esp + 0x24]
or ecx, eax
mov ecx, dword [esp + 0x38]
jne 0x159f404
cmp esi, ecx
je 0x159f3c2
movsd xmm1, qword [esp + 0x60]
comisd xmm1, xmmword [esp + 0xb0]
jbe 0x159f404
movaps xmm0, xmmword [esp + 0xa0]
movaps xmmword [esp + 0x70], xmm0
movaps xmm0, xmmword [esp + 0xb0]
movaps xmmword [esp + 0x80], xmm0
movq xmm0, qword [esp + 0xc0]
movq qword [esp + 0x90], xmm0
movsd xmm0, qword [esp + 0x80]
mov dword [esp + 0x40], esi
movsd qword [esp + 0x60], xmm0
cmp byte [esp + 0x1f], 0
jne 0x159f425
mov edx, dword [esp + 0xc]
inc esi
add dword [esp + 0x58], 0x40
add edi, 0x38
movsx eax, word [edx]
cmp esi, eax
jl 0x159f2f0
jmp 0x159f429
mov edx, dword [esp + 0xc]
sub dword [esp + 0x50], 1
mov edi, dword [esp + 0x40]
jns 0x159f282
mov edi, dword [esp + 0x70]
test edi, 0x1000000
je 0x159f44d
mov eax, dword [ebp + 0xc]
mov dword [eax], 0
mov esi, dword [esp + 0x44]
movq xmm0, qword [esp + 0x70]
and dword [esp + 0x18], edi
mov eax, dword [esp + 0x78]
movq qword [esi], xmm0
mov dword [esi + 8], eax
and edi, 0xf0000
je 0x159f47d
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x44]
mov dword [esi + 0x14], eax
inc dword [ecx + 0x44]
jmp 0x159f484
mov dword [esi + 0x14], 0xffffffff
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x54]
lea esi, [eax*8]
sub esi, eax
mov edx, dword [edx + esi*8 + 0x20]
call fcn.0159c360
not edx
not eax
and dword [esp + 0x24], edx
mov edx, dword [esp + 0x44]
and dword [esp + 0x20], eax
mov eax, dword [esp + 0x40]
mov byte [edx + 0x28], al
mov edx, dword [esp + 0xc]
mov eax, dword [edx + esi*8 + 0x3c]
test eax, eax
je 0x159f4c5
test edi, edi
je 0x159f4eb
mov ecx, dword [esp + 0x30]
movsx eax, word [edx]
inc ecx
add dword [esp + 0x44], 0x40
mov dword [esp + 0x30], ecx
cmp ecx, eax
jge 0x159f515
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
jmp 0x159f254
push dword [eax]
push 0xf94440
push dword [esp + 0x1c]
call fcn.01573480
add esp, 0xc
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov edx, eax
call fcn.0159f020
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x40], 0
jne 0x159f4fe
mov ecx, dword [esp + 0x2c]
cmp byte [ecx + 0x1e], 0
jne 0x159f4fe
mov ecx, dword [esp + 0x18]
and ecx, 0x4000000
je 0x159f54a
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x159f546
mov dword [eax], 0
mov eax, dword [esp + 0x14]
test byte [ebp + 0x10], 4
je 0x159f562
test ecx, ecx
je 0x159f562
mov ecx, dword [esp + 0x10]
mov byte [ecx + 6], 1
and dword [edi], 0xff7fffff
or edx, 0xffffffff
mov ecx, eax
call fcn.0158fdd0
mov ecx, dword [esp + 0xc]
xor eax, eax
mov dword [esp + 0x30], 0
cmp ax, word [ecx]
jge 0x159f700
jmp 0x159f594
mov ecx, dword [esp + 0xc]
movzx eax, byte [edi + 0x28]
lea edi, [eax*8]
sub edi, eax
mov esi, dword [ecx + edi*8 + 0x14]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esi + 0x40]
call fcn.01595e00
test byte [esi + 0x22], 2
mov edx, eax
mov dword [esp + 0x18], edx
jne 0x159f6dd
cmp dword [esi + 0x1c], 0
jne 0x159f6dd
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
test ecx, 0x8000000
je 0x159f606
mov ecx, dword [esp + 0x2c]
mov edx, esi
call fcn.0159b4a0
mov ecx, dword [esp + 0x3c]
mov edx, 0x7c
push 0xfffffffffffffff6
push eax
mov eax, dword [esp + 0x14]
push 0
push 0
push dword [eax + edi*8 + 0x20]
call fcn.0157f720
add esp, 0x14
jmp 0x159f684
test ecx, 0x800000
jne 0x159f684
test byte [ebp + 0x10], 0x10
jne 0x159f684
mov ecx, dword [esp + 0x10]
xor eax, eax
cmp byte [ecx + 6], al
mov ecx, dword [esp + 0x14]
setne al
add eax, 0x26
push eax
mov eax, dword [esp + 0x10]
push esi
push edx
mov edx, dword [eax + edi*8 + 0x20]
call fcn.015926f0
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp byte [eax + 6], 0
jne 0x159f684
cmp dword [esi + 0xc], 0x40
jge 0x159f684
mov eax, dword [esp + 0xc]
xor esi, esi
mov edx, dword [eax + edi*8 + 0x30]
mov ecx, dword [eax + edi*8 + 0x34]
mov eax, edx
or eax, ecx
je 0x159f66d
nop
shrd edx, ecx, 1
inc esi
shr ecx, 1
mov eax, edx
or eax, ecx
jne 0x159f660
mov ecx, dword [esp + 0x3c]
push 0xfffffffffffffff2
push esi
call fcn.015760d0
lea edx, [eax - 1]
call fcn.0157fbe0
add esp, 8
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0xc]
test dword [ecx], 0xf0000
mov eax, dword [eax + edi*8 + 0x20]
mov dword [ecx + 0x10], eax
je 0x159f6ce
mov esi, dword [ecx + 8]
mov edx, esi
mov ecx, dword [esp + 0x14]
call fcn.0158fed0
mov edi, dword [esp + 0x18]
mov edx, 0x26
mov ecx, dword [esp + 0x3c]
push 0xfffffffffffffff0
push eax
mov eax, dword [esp + 0x30]
push edi
push dword [esi + 0x14]
push dword [eax + 0x14]
call fcn.0157f720
add esp, 0x14
jmp 0x159f6d2
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov edx, edi
call fcn.0158fdd0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
inc ecx
add edi, 0x40
mov dword [esp + 0x30], ecx
movsx eax, word [eax]
mov dword [esp + 0x28], edi
cmp ecx, eax
jl 0x159f590
mov ecx, dword [esp + 0x3c]
call fcn.015760d0
mov ecx, dword [esp + 0x10]
xor edi, edi
or edx, 0xffffffff
xor esi, esi
mov dword [ecx + 0xc], eax
or eax, 0xffffffff
mov ecx, dword [esp + 0xc]
cmp di, word [ecx]
jge 0x159f763
mov ecx, dword [esp + 0x10]
lea edi, [ecx + 0x40]
jmp 0x159f734
mov ecx, dword [esp + 0x10]
push edx
push eax
push dword [ebp + 0x10]
mov edx, esi
call fcn.0159e4b0
mov ecx, dword [edi]
lea edi, [edi + 0x40]
mov dword [esp + 0x24], eax
inc esi
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov dword [eax + 0x10], ecx
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x18]
movsx ecx, word [ecx]
cmp esi, ecx
jl 0x159f730
mov eax, dword [esp + 0x10]
pop edi
pop esi
mov esp, ebp
pop ebp
ret