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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa0
mov edi, ecx
mov ebx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x48], eax
pxor xmm0, xmm0
movdqa xmmword [esp + 0x60], xmm0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
movdqa xmmword [esp + 0x80], xmm0
mov dword [esp + 0x94], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x44], eax
xor eax, eax
mov ecx, 0
mov dword [esp + 0x30], edx
test dl, 8
jne 0x438333
push 0
push dword [edi + 0x14]
mov eax, dword [ebp + 0xc]
push dword [eax + 0x6c]
push dword [eax + 4]
call fcn.004242b0
add esp, 0x10
mov ecx, edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0xc], edi
mov cl, byte [edi + 0x64]
mov edx, 1
shl edx, cl
lea esi, [edx - 1]
mov eax, edx
neg eax
mov edi, eax
sar edi, 0x1f
and edi, dword [ebp + 0x30]
and ebx, eax
mov ecx, ebx
mov ebx, esi
sar ebx, 0x1f
mov dword [esp + 0x4c], ebx
and ebx, dword [ebp + 0x20]
mov dword [esp + 0x24], esi
and esi, dword [ebp + 0x1c]
or ecx, esi
mov dword [esp + 0x58], ecx
or edi, ebx
mov ecx, eax
and ecx, 0x7fff
mov dword [esp + 0x54], ecx
and eax, 0x8000
mov dword [esp + 0x5c], eax
mov eax, dword [ebp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x24]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0
mov eax, dword [ebp + 0x14]
test eax, eax
mov dword [esp + 0x78], edi
je 0x4384b0
cmp edx, 2
jl 0x4384b0
test byte [eax + 0x14], 2
mov eax, dword [eax + 0x10]
mov edi, dword [esp + 0x54]
cmove edi, dword [esp + 0x5c]
mov dword [esp + 0x10], eax
sub edi, eax
mov eax, dword [ebp + 0x24]
cmp eax, edi
mov eax, dword [ebp + 0x28]
mov ecx, eax
sbb ecx, 0
cmovb edi, dword [ebp + 0x24]
mov ecx, 0
cmovb ecx, eax
mov eax, edi
or eax, ecx
je 0x438488
sub edx, esi
mov esi, 0
sbb esi, ebx
mov ebx, edx
and ebx, dword [esp + 0x24]
and esi, dword [esp + 0x4c]
mov eax, ebx
or eax, esi
je 0x438488
cmp edi, ebx
mov eax, ecx
sbb eax, esi
cmovb esi, ecx
cmovb ebx, edi
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
test byte [esp + 0x30], 8
jne 0x438492
mov eax, dword [esp + 0x10]
add eax, ecx
mov edi, edx
adc edi, 0
add eax, 0xffffffff
adc edi, 0xffffffff
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x2c]
sub ecx, eax
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x4c], edx
mov edx, ecx
sbb edx, edi
setb byte [esp + 0x50]
add eax, ebx
adc edi, esi
cmp eax, dword [esp + 0x2c]
sbb edi, ecx
setb cl
or cl, byte [esp + 0x50]
mov ecx, dword [esp + 0x24]
cmove esi, edx
mov edx, dword [esp + 0x4c]
cmove ebx, dword [esp + 0x10]
mov dword [esp + 0x10], ebx
or ebx, esi
mov edi, dword [ebp + 0x10]
mov ebx, dword [esp + 0x58]
jne 0x43849d
mov dword [esp + 0x10], 0
jmp 0x4384b0
mov dword [esp + 0x10], ebx
mov edi, dword [ebp + 0x10]
mov ebx, dword [esp + 0x58]
push edx
push ecx
push edi
call fcn.00415a40
add esp, 0xc
test eax, eax
je 0x43879b
mov ebx, dword [ebp + 0x18]
test ebx, ebx
je 0x4385d6
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x64]
mov eax, 1
shl eax, cl
cmp eax, 2
jl 0x4385ed
test byte [ebx + 0x14], 2
mov esi, dword [esp + 0x54]
cmove esi, dword [esp + 0x5c]
sub esi, dword [ebx + 0x10]
xor edi, edi
mov edx, dword [esp + 0x14]
cmp edx, esi
mov ebx, dword [esp + 0x28]
mov eax, ebx
sbb eax, 0
cmovb esi, edx
cmovb edi, ebx
mov eax, esi
or eax, edi
je 0x4385ea
mov edx, dword [ebp + 0x18]
mov eax, dword [edx + 8]
mov edx, dword [edx + 0xc]
mov ebx, 0xffffffff
shl ebx, cl
not ebx
mov ecx, eax
and ecx, ebx
sar ebx, 0x1f
and ebx, edx
mov dword [esp + 0x10], ecx
or ecx, ebx
je 0x4385e2
push edx
push eax
push dword [ebp + 0x10]
call fcn.00415a40
add esp, 0xc
test eax, eax
mov edx, dword [ebp + 0x18]
jne 0x438ef0
mov ecx, dword [esp + 0x10]
cmp esi, ecx
mov eax, edi
sbb eax, ebx
cmovb ecx, esi
cmovb ebx, edi
movdqu xmm0, xmmword [edx]
movd xmm1, ebx
movd xmm2, ecx
punpckldq xmm2, xmm1
pshufd xmm1, xmm2, 0x44
psubq xmm0, xmm1
movdqu xmmword [edx], xmm0
add dword [edx + 0x10], ecx
mov dword [esp + 0x10], ecx
sub dword [esp + 0x14], ecx
sbb dword [esp + 0x28], ebx
push edx
push 0
push dword [ebp + 0x10]
call fcn.00415d30
add esp, 0xc
test eax, eax
jne 0x438ef0
push dword [ebp + 0x10]
call fcn.00415a60
mov ebx, dword [ebp + 0x18]
add esp, 4
test eax, eax
jne 0x438ef0
test byte [ebx + 0x14], 2
jne 0x4385ed
push 0
push 0
push dword [esp + 0x18]
push dword [ebx + 4]
push dword [ebx]
push dword [esp + 0x20]
call fcn.0041d3f0
mov ebx, dword [ebp + 0x18]
add esp, 0x18
test eax, eax
jne 0x438ef0
jmp 0x4385ed
mov ecx, dword [ebp + 0x14]
test ecx, ecx
jne 0x43861e
jmp 0x4389dd
mov dword [esp + 0x10], 0
mov ebx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x4388bc
mov eax, dword [eax + 0x14]
and eax, 2
mov ecx, dword [ebx + 0x14]
and ecx, 2
cmp eax, ecx
jne 0x43861b
test byte [esp + 0x30], 2
je 0x43876d
test eax, eax
je 0x43876d
mov ecx, dword [ebp + 0x14]
test byte [ecx + 0x14], 2
jne 0x438644
xor edx, edx
test byte [esp + 0x30], 1
mov esi, dword [esp + 0x14]
je 0x438638
mov edx, dword [esp + 0x5c]
sub edx, dword [ecx + 0x10]
test byte [esp + 0x30], 4
je 0x43865a
jmp 0x4388b4
test byte [esp + 0x30], 2
jne 0x4388b4
mov edx, dword [esp + 0x54]
sub edx, dword [ecx + 0x10]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x30]
and eax, 8
shr eax, 3
xor edi, edi
cmp esi, edx
mov ebx, dword [esp + 0x28]
mov esi, ebx
sbb esi, 0
cmovb edi, ebx
mov dword [esp + 0x4c], edi
cmovb edx, dword [esp + 0x14]
mov dword [esp + 0x24], edx
mov edx, dword [ecx + 8]
add edx, dword [ecx + 0x10]
mov esi, dword [ecx + 0xc]
adc esi, 0
add edx, 0xffffffff
adc esi, 0xffffffff
mov ecx, dword [esp + 0x2c]
sub ecx, edx
mov edi, dword [esp + 0x34]
sbb edi, esi
setb bl
or bl, al
mov dword [esp + 0x50], edx
add edx, dword [esp + 0x24]
mov dword [esp + 0x7c], esi
mov eax, dword [esp + 0x4c]
adc esi, eax
cmp edx, dword [esp + 0x2c]
sbb esi, dword [esp + 0x34]
mov esi, edi
mov edi, ecx
setb dl
or dl, bl
cmovne esi, eax
cmovne edi, dword [esp + 0x24]
mov eax, edi
or eax, esi
je 0x4388b1
mov ebx, dword [esp + 0xc]
mov cl, byte [ebx + 0x64]
mov eax, 1
shl eax, cl
cmp eax, 2
jl 0x438880
mov ecx, dword [esp + 0x50]
add ecx, edi
mov edx, dword [esp + 0x7c]
adc edx, esi
lea eax, [esp + 0x18]
push eax
mov dword [esp + 0x80], edx
push edx
mov dword [esp + 0x58], ecx
push ecx
push dword [ebp + 0xc]
push dword [ebp + 8]
push ebx
call fcn.00435f50
add esp, 0x18
test eax, eax
jne 0x438ef0
mov eax, dword [esp + 0x18]
or eax, dword [esp + 0x1c]
je 0x43887c
mov ebx, dword [esp + 0xc]
mov cl, byte [ebx + 0x64]
mov eax, 0xffffffff
shl eax, cl
not eax
mov ecx, dword [esp + 0x50]
and ecx, eax
sar eax, 0x1f
mov edx, dword [esp + 0x7c]
and edx, eax
not ecx
add edi, ecx
not edx
adc esi, edx
mov eax, edi
or eax, esi
jne 0x438880
jmp 0x4388b1
test byte [esp + 0x30], 4
mov ecx, dword [ebp + 0x14]
jne 0x438828
test eax, eax
jne 0x438830
mov ecx, dword [esp + 0x30]
and ecx, 3
cmp ecx, 3
mov ecx, dword [ebp + 0x14]
jne 0x43861e
jmp 0x438830
mov eax, dword [esp + 0x10]
mov ecx, dword [ebp + 0x14]
add dword [ecx + 0x10], eax
add dword [esp + 0x44], eax
adc dword [esp + 0x48], esi
sub dword [esp + 0x14], eax
sbb dword [esp + 0x28], esi
add ebx, eax
mov dword [esp + 0x58], ebx
adc dword [esp + 0x78], esi
push ecx
push 0
push edi
call fcn.00415d30
add esp, 0xc
test eax, eax
jne 0x438ef0
push dword [ebp + 0x10]
call fcn.00415a60
add esp, 4
test eax, eax
jne 0x438ef0
mov ecx, dword [ebp + 0x14]
test byte [ecx + 0x14], 2
jne 0x4384b0
mov eax, dword [ecx]
mov edi, ecx
mov ecx, dword [ecx + 4]
mov edx, dword [esp + 0x10]
sub eax, edx
sbb ecx, esi
add eax, dword [edi + 0x10]
adc ecx, 0
push 0
push 0
push edx
push ecx
push eax
push dword [esp + 0x20]
call fcn.0041d3f0
add esp, 0x18
test eax, eax
jne 0x438ef0
jmp 0x4384b0
test eax, eax
je 0x43861e
mov esi, dword [ecx + 0x10]
add esi, dword [esp + 0x14]
mov edi, ecx
mov ecx, dword [esp + 0x28]
adc ecx, 0
add esi, dword [ebx + 0x10]
adc ecx, 0
test eax, eax
mov eax, dword [esp + 0x54]
cmove eax, dword [esp + 0x5c]
xor edx, edx
cmp eax, esi
sbb edx, ecx
jb 0x438872
push dword [edi + 0xc]
push dword [edi + 8]
push dword [ebp + 0x10]
call fcn.00415a40
add esp, 0xc
test eax, eax
je 0x43931d
mov ebx, dword [ebp + 0x18]
mov ecx, edi
jmp 0x43861e
mov ebx, dword [esp + 0xc]
mov edx, dword [ebp + 0x14]
mov eax, dword [edx]
mov ecx, dword [edx + 4]
add eax, dword [edx + 0x10]
adc ecx, 0
lea edx, [esp + 0x38]
push edx
lea edx, [esp + 0x1c]
push edx
push 0
push esi
push edi
push ecx
push eax
push 3
push ebx
call fcn.00410280
add esp, 0x24
test eax, eax
je 0x438b2e
mov ebx, dword [ebp + 0x18]
test ebx, ebx
je 0x4389dd
test byte [ebx + 0x14], 2
jne 0x4388e8
mov edi, ebx
xor esi, esi
test byte [esp + 0x30], 1
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
je 0x4388dc
mov esi, dword [esp + 0x5c]
sub esi, dword [edi + 0x10]
test byte [esp + 0x30], 4
je 0x438904
jmp 0x4389dd
test byte [esp + 0x30], 2
jne 0x4389dd
mov esi, dword [esp + 0x54]
mov edi, ebx
sub esi, dword [ebx + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
xor ebx, ebx
cmp ecx, esi
mov eax, edx
sbb eax, 0
cmovb ebx, edx
cmovb esi, ecx
mov eax, esi
or eax, ebx
je 0x4389dd
mov edx, dword [esp + 0xc]
mov cl, byte [edx + 0x64]
mov eax, 1
shl eax, cl
cmp eax, 2
jl 0x4389ab
mov eax, dword [edi + 8]
mov ecx, dword [edi + 0xc]
sub eax, esi
sbb ecx, ebx
lea edx, [esp + 0x18]
push edx
push ecx
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [esp + 0x20]
call fcn.00435f50
add esp, 0x18
test eax, eax
jne 0x438ef0
mov eax, dword [esp + 0x18]
or eax, dword [esp + 0x1c]
je 0x4389ab
mov eax, dword [esp + 0xc]
mov cl, byte [eax + 0x64]
mov eax, 1
shl eax, cl
mov ecx, eax
sar ecx, 0x1f
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebp + 0x18]
mov edx, dword [ecx + 8]
mov ecx, dword [ebp + 0x18]
mov ecx, dword [ecx + 0xc]
sub edx, esi
sbb ecx, ebx
lea edi, [eax - 1]
and edx, edi
sar edi, 0x1f
and edi, ecx
sub edx, eax
sbb edi, dword [esp + 0x2c]
add esi, edx
mov ecx, dword [ebp + 0x18]
adc ebx, edi
mov eax, esi
or eax, ebx
jne 0x4389ad
jmp 0x4389dd
mov ecx, edi
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
sub eax, esi
sbb ecx, ebx
lea edx, [esp + 0x38]
lea edi, [esp + 0x18]
push edx
push edi
push 0
push ebx
push esi
push ecx
push eax
push 3
mov ebx, dword [esp + 0x2c]
push ebx
call fcn.00410280
add esp, 0x24
test eax, eax
je 0x438c4f
xor edx, edx
mov ebx, dword [esp + 0x14]
mov eax, ebx
or eax, dword [esp + 0x28]
je 0x438ef2
mov eax, dword [esp + 0xc]
mov cl, byte [eax + 0x64]
mov esi, 1
shl esi, cl
lea edi, [esi - 1]
mov eax, edi
sar eax, 0x1f
mov edx, dword [esp + 0x44]
mov ecx, edx
mov dword [esp + 0x10], edi
and ecx, edi
mov edi, dword [esp + 0x48]
mov dword [esp + 0x14], ebx
mov ebx, edi
mov dword [esp + 0x34], eax
and ebx, eax
mov eax, ebx
mov ebx, ecx
or ebx, eax
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], edi
je 0x438e5b
mov ebx, esi
sar ebx, 0x1f
sub esi, ecx
sbb ebx, eax
and ebx, dword [esp + 0x34]
and esi, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp edx, esi
mov ecx, dword [esp + 0x28]
mov eax, ecx
sbb eax, ebx
cmovb ebx, ecx
cmovb esi, edx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x68], ecx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x6c], edx
lea eax, [esp + 0x18]
push eax
push edx
push ecx
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [esp + 0x20]
call fcn.00435f50
add esp, 0x18
test eax, eax
jne 0x438ef0
mov dword [esp + 0x10], ebx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, eax
or edx, ecx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x2c], edx
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x48]
je 0x438e5b
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], ecx
mov dword [esp + 0x70], esi
mov eax, dword [esp + 0x30]
not eax
and eax, 2
mov dword [esp + 0x74], eax
push dword [esp + 0x6c]
push dword [esp + 0x6c]
mov edi, dword [ebp + 0x10]
push edi
call fcn.00415a40
add esp, 0xc
lea eax, [esp + 0x80]
push eax
push 0
push edi
call fcn.00415320
add esp, 0xc
cmp eax, 0x7f2bb780
je 0x438da7
test eax, eax
mov ebx, dword [esp + 0x10]
jne 0x438ef0
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
mov edi, dword [ebp + 0x10]
jmp 0x438dc5
mov cl, byte [ebx + 0x64]
mov byte [esp + 0x2c], cl
mov eax, 1
shl eax, cl
mov edx, eax
sar edx, 0x1f
mov ecx, dword [esp + 0x38]
add ecx, eax
mov esi, ebx
mov ebx, dword [esp + 0x3c]
adc ebx, edx
add ecx, 0xffffffff
adc ebx, 0xffffffff
mov edi, dword [esp + 0x18]
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x1c]
push edx
push eax
push ebx
push ecx
call fcn.004242b0
add esp, 0x10
mov ebx, eax
mov dword [esp + 0x24], edx
mov cl, byte [esp + 0x2c]
shl eax, cl
push 1
push eax
push edi
push dword [esp + 0x40]
push esi
call fcn.00410950
add esp, 0x14
push dword [esp + 0x24]
push ebx
push dword [ebp + 0xc]
push esi
call fcn.00418bc0
add esp, 0x10
test eax, eax
jne 0x438ef0
mov eax, dword [ebp + 0x14]
push dword [eax + 0xc]
push dword [eax + 8]
push dword [ebp + 0x10]
call fcn.00415a40
add esp, 0xc
test eax, eax
jne 0x438ef0
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x44], eax
adc dword [esp + 0x48], ecx
sub dword [esp + 0x14], eax
sbb dword [esp + 0x28], ecx
mov ecx, dword [ebp + 0x14]
add dword [ecx + 0x10], eax
push ecx
push 0
push dword [ebp + 0x10]
call fcn.00415d30
add esp, 0xc
test eax, eax
jne 0x438ef0
push dword [ebp + 0x10]
call fcn.00415a60
mov ebx, dword [ebp + 0x18]
add esp, 4
test eax, eax
jne 0x438ef0
mov eax, dword [ebp + 0x14]
test byte [eax + 0x14], 2
jne 0x4388b4
mov eax, dword [esp + 0x30]
and eax, 1
je 0x4388b4
push 0
push 0
push dword [esp + 0x40]
push dword [esp + 0x28]
push dword [esp + 0x28]
push dword [esp + 0x20]
call fcn.0041d3f0
mov ebx, dword [ebp + 0x18]
add esp, 0x18
test eax, eax
jne 0x438ef0
jmp 0x4388b4
mov dl, byte [ebx + 0x64]
mov edi, 0xffffffff
mov ecx, edx
mov byte [esp + 0x34], dl
shl edi, cl
mov ecx, dword [esp + 0x18]
mov esi, edi
not esi
mov eax, ecx
and eax, edi
mov dword [esp + 0x2c], eax
sar edi, 0x1f
mov eax, dword [esp + 0x1c]
and edi, eax
and ecx, esi
mov dword [esp + 0x24], ecx
mov ebx, 1
mov ecx, edx
shl ebx, cl
sar esi, 0x1f
and esi, eax
mov edx, ebx
sar edx, 0x1f
mov ecx, dword [esp + 0x38]
add ecx, ebx
mov eax, dword [esp + 0x3c]
adc eax, edx
add ecx, dword [esp + 0x24]
adc eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
push edx
push ebx
push eax
push ecx
call fcn.004242b0
add esp, 0x10
mov ebx, eax
mov dword [esp + 0x24], edx
mov cl, byte [esp + 0x34]
shl eax, cl
push 1
push eax
push edi
push dword [esp + 0x38]
mov esi, dword [esp + 0x1c]
push esi
call fcn.00410950
add esp, 0x14
push dword [esp + 0x24]
push ebx
push dword [ebp + 0xc]
push esi
call fcn.00418bc0
add esp, 0x10
test eax, eax
mov esi, dword [ebp + 0x18]
jne 0x438ef0
push dword [esi + 0xc]
push dword [esi + 8]
push dword [ebp + 0x10]
call fcn.00415a40
add esp, 0xc
test eax, eax
jne 0x438ef0
mov eax, dword [esp + 0x38]
sub dword [esp + 0x14], eax
mov ecx, dword [esp + 0x28]
sbb ecx, dword [esp + 0x3c]
mov dword [esp + 0x28], ecx
movdqu xmm0, xmmword [esi]
movq xmm1, qword [esp + 0x38]
pshufd xmm1, xmm1, 0x44
psubq xmm0, xmm1
movdqu xmmword [esi], xmm0
add dword [esi + 0x10], eax
push esi
push 0
push dword [ebp + 0x10]
call fcn.00415d30
add esp, 0xc
test eax, eax
jne 0x438ef0
push dword [ebp + 0x10]
call fcn.00415a60
add esp, 4
test eax, eax
jne 0x438ef0
test byte [esi + 0x14], 2
jne 0x4389dd
mov eax, dword [esp + 0x30]
and eax, 1
je 0x4389dd
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x38]
push 0
push 0
push eax
push dword [esp + 0x28]
push dword [esp + 0x28]
push dword [esp + 0x20]
call fcn.0041d3f0
add esp, 0x18
test eax, eax
jne 0x438ef0
jmp 0x4389dd
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
xor eax, eax
xor ecx, ecx
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x6c]
cmp dword [esp + 0x68], eax
sbb edx, ecx
setae al
movzx eax, al
lea ecx, [esp + 0x60]
push ecx
push eax
push edi
call fcn.00416410
add esp, 0xc
test eax, eax
jne 0x438ef0
push dword [ebp + 0x10]
call fcn.00415a60
add esp, 4
test eax, eax
jne 0x438ef0
test byte [esp + 0x74], 2
jne 0x438e33
mov eax, dword [esp + 0x30]
and eax, 1
je 0x438e33
push 0
push 0
push dword [esp + 0x78]
push dword [esp + 0x70]
push dword [esp + 0x70]
push dword [esp + 0x20]
call fcn.0041d3f0
add esp, 0x18
test eax, eax
jne 0x438ef0
mov edx, esi
add edx, dword [esp + 0x44]
mov edi, ebx
adc edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x14]
sub ecx, esi
mov eax, ebx
mov ebx, dword [esp + 0x28]
sbb ebx, eax
mov dword [esp + 0x2c], ecx
mov eax, ecx
or eax, ebx
je 0x439482
mov dword [esp + 0x50], edi
mov dword [esp + 0x10], edx
mov dword [esp + 0x24], ebx
mov edx, dword [esp + 0x14]
add edx, dword [esp + 0x44]
mov esi, dword [esp + 0x28]
adc esi, dword [esp + 0x48]
mov eax, dword [esp + 0xc]
mov cl, byte [eax + 0x64]
mov eax, 0xffffffff
shl eax, cl
mov ebx, eax
not ebx
mov edi, edx
and edi, ebx
sar ebx, 0x1f
and ebx, esi
mov ecx, edi
or ecx, ebx
je 0x438efc
mov ecx, edx
mov edx, dword [esp + 0x2c]
cmp edx, edi
mov dword [esp + 0x14], edi
mov edi, ecx
mov ecx, dword [esp + 0x24]
sbb ecx, ebx
cmovb ebx, dword [esp + 0x24]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x2c], edx
cmovb ebx, edx
and edi, eax
sar eax, 0x1f
and esi, eax
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], esi
lea eax, [esp + 0x18]
push eax
push esi
push edi
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [esp + 0x20]
call fcn.00435f50
add esp, 0x18
test eax, eax
je 0x4391e9
mov edx, eax
mov eax, edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x68], edx
mov edi, dword [esp + 0x50]
mov dword [esp + 0x6c], edi
mov eax, dword [esp + 0x30]
and eax, 2
mov ecx, eax
xor ecx, 2
test eax, eax
mov eax, dword [esp + 0x5c]
cmove eax, dword [esp + 0x54]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x74], ecx
mov eax, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x4c], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x2c], esi
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x24]
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0xc]
nop word cs:[eax + eax]
nop dword [eax]
movzx ecx, byte [ecx + 0x64]
mov eax, 0xffffffff
shl eax, cl
mov esi, eax
not esi
and edx, esi
sar esi, 0x1f
and esi, edi
mov dword [esp + 0x10], edx
mov ecx, edx
add ecx, dword [esp + 0x14]
mov edx, esi
adc edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x5c]
cmp ecx, ebx
mov edi, edx
sbb edi, 0
mov edi, 0
cmovae edx, edi
cmovae ecx, ebx
mov ebx, dword [esp + 0x58]
and ebx, eax
sar eax, 0x1f
and eax, dword [esp + 0x78]
lea edi, [esp + 0x38]
push edi
lea edi, [esp + 0x1c]
push edi
push 0
push edx
push ecx
push eax
push ebx
push 0
push dword [esp + 0x2c]
call fcn.00410280
add esp, 0x24
test eax, eax
jne 0x438ef0
mov eax, dword [esp + 0xc]
movzx ecx, byte [eax + 0x64]
mov byte [esp + 0x44], cl
mov eax, 1
shl eax, cl
mov edx, eax
sar edx, 0x1f
mov ecx, dword [esp + 0x38]
add ecx, eax
mov edi, dword [esp + 0x3c]
adc edi, edx
add ecx, 0xffffffff
adc edi, 0xffffffff
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x48], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x58], ebx
push edx
push eax
push edi
push ecx
call fcn.004242b0
add esp, 0x10
mov edi, eax
mov dword [esp + 0x54], edx
movzx ecx, byte [esp + 0x44]
mov ebx, dword [esp + 0xc]
shl eax, cl
push 1
push eax
push dword [esp + 0x60]
push dword [esp + 0x54]
push ebx
call fcn.00410950
add esp, 0x14
push dword [esp + 0x54]
push edi
push dword [ebp + 0xc]
push ebx
call fcn.00418bc0
add esp, 0x10
test eax, eax
jne 0x438ef0
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
add eax, edx
mov ecx, dword [esp + 0x1c]
adc ecx, esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], ecx
mov eax, dword [esp + 0x38]
sub eax, edx
mov dword [esp + 0x70], eax
push dword [esp + 0x6c]
push dword [esp + 0x6c]
mov edi, dword [ebp + 0x10]
push edi
call fcn.00415a40
add esp, 0xc
lea eax, [esp + 0x80]
push eax
push 0
push edi
call fcn.00415320
add esp, 0xc
cmp eax, 0x7f2bb780
je 0x4390d0
test eax, eax
jne 0x438ef0
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
jmp 0x4390ea
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
xor eax, eax
xor ecx, ecx
mov edx, dword [esp + 0x6c]
cmp dword [esp + 0x68], eax
sbb edx, ecx
setae al
movzx eax, al
lea ecx, [esp + 0x60]
push ecx
push eax
push edi
call fcn.00416410
add esp, 0xc
test eax, eax
jne 0x438ef0
push edi
call fcn.00415a60
add esp, 4
test eax, eax
jne 0x438ef0
test byte [esp + 0x74], 2
jne 0x439153
mov eax, dword [esp + 0x30]
and eax, 1
je 0x439153
push 0
push 0
push dword [esp + 0x40]
push dword [esp + 0x28]
push dword [esp + 0x28]
push ebx
call fcn.0041d3f0
add esp, 0x18
test eax, eax
jne 0x438ef0
mov edi, dword [esp + 0x38]
sub edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x3c]
sbb ebx, esi
mov esi, dword [esp + 0x4c]
add esi, edi
adc dword [esp + 0x34], ebx
sub dword [esp + 0x14], edi
sbb dword [esp + 0x28], ebx
add dword [esp + 0x68], edi
adc dword [esp + 0x6c], ebx
add edi, dword [esp + 0x18]
adc ebx, dword [esp + 0x1c]
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], ebx
mov eax, dword [esp + 0xc]
push dword [eax + 0x10]
call fcn.00412170
add esp, 4
cmp edi, eax
sbb ebx, edx
mov ecx, dword [esp + 0xc]
jb 0x4391b6
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
cmp esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
sbb eax, dword [esp + 0x24]
jae 0x439265
mov dword [esp + 0x4c], esi
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x6c]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x78], eax
jmp 0x438f70
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, eax
or edx, ecx
je 0x438f00
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x70], ebx
mov eax, dword [esp + 0x30]
not eax
and eax, 2
mov dword [esp + 0x74], eax
push dword [esp + 0x6c]
push dword [esp + 0x6c]
mov edi, dword [ebp + 0x10]
push edi
call fcn.00415a40
add esp, 0xc
lea eax, [esp + 0x80]
push eax
push 0
push edi
call fcn.00415320
add esp, 0xc
cmp eax, 0x7f2bb780
je 0x43926c
test eax, eax
jne 0x438ef0
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
mov edi, dword [ebp + 0x10]
jmp 0x439286
xor eax, eax
jmp 0x438ef0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
xor eax, eax
xor ecx, ecx
mov edx, dword [esp + 0x6c]
cmp dword [esp + 0x68], eax
sbb edx, ecx
setae al
movzx eax, al
lea ecx, [esp + 0x60]
push ecx
push eax
push edi
call fcn.00416410
add esp, 0xc
test eax, eax
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x14]
jne 0x438ef0
push dword [ebp + 0x10]
call fcn.00415a60
xor edx, edx
add esp, 4
test eax, eax
jne 0x438ef0
test byte [esp + 0x74], 2
jne 0x439300
mov eax, dword [esp + 0x30]
and eax, 1
je 0x439300
push 0
push 0
push dword [esp + 0x78]
push dword [esp + 0x70]
push dword [esp + 0x70]
push dword [esp + 0x20]
call fcn.0041d3f0
xor edx, edx
add esp, 0x18
test eax, eax
jne 0x438ef0
sub esi, edi
mov ecx, dword [esp + 0x24]
sbb ecx, dword [esp + 0x28]
mov eax, esi
mov dword [esp + 0x24], ecx
or eax, ecx
jne 0x438f00
jmp 0x438ef2
mov eax, dword [edi]
add eax, dword [edi + 0x10]
mov ecx, dword [edi + 4]
adc ecx, 0
mov ebx, dword [ebp + 0x18]
mov edx, dword [ebx]
mov edi, dword [ebx + 4]
sub edx, eax
sbb edi, ecx
add edx, 1
adc edi, 0
lea ebx, [esp + 0x38]
push ebx
lea ebx, [esp + 0x1c]
push ebx
push 0
push edi
push edx
push ecx
push eax
push 3
push dword [esp + 0x2c]
call fcn.00410280
add esp, 0x24
test eax, eax
jne 0x43947a
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x24], edx
add ecx, edx
mov edx, eax
mov dword [esp + 0x4c], edi
adc edx, edi
mov edi, dword [ebp + 0x18]
xor ecx, dword [edi]
xor edx, dword [edi + 4]
or edx, ecx
jne 0x43947a
mov ecx, dword [esp + 0xc]
mov edx, dword [ebp + 0xc]
push eax
push dword [esp + 0x54]
push dword [esp + 0x54]
push dword [esp + 0x30]
call fcn.00439490
add esp, 0x10
test eax, eax
jne 0x438ef0
mov eax, dword [ebp + 0x14]
mov dword [eax + 0x10], esi
push eax
push 0
push dword [ebp + 0x10]
call fcn.00415d30
add esp, 0xc
test eax, eax
jne 0x438ef0
push dword [ebp + 0x10]
call fcn.00415a60
add esp, 4
test eax, eax
jne 0x438ef0
lea eax, [esp + 0x60]
push eax
push 7
push dword [ebp + 0x10]
call fcn.00415320
add esp, 0xc
test eax, eax
jne 0x438ef0
push 0
push dword [ebp + 0x10]
call fcn.004165e0
add esp, 8
test eax, eax
jne 0x438ef0
push dword [ebp + 0x10]
call fcn.00415a60
mov ecx, dword [ebp + 0x18]
add esp, 4
test eax, eax
jne 0x438ef0
mov eax, dword [ebp + 0x14]
movsd xmm0, qword [eax + 0x10]
movsd qword [ecx + 0x10], xmm0
movdqu xmm0, xmmword [eax]
movdqu xmmword [ecx], xmm0
test byte [eax + 0x14], 2
jne 0x439482
and dword [esp + 0x30], 1
je 0x439482
push 0
push 0
push dword [esp + 0x1c]
push dword [esp + 0x54]
push dword [esp + 0x54]
push dword [esp + 0x20]
call fcn.0041d3f0
add esp, 0x18
test eax, eax
mov edx, 0
jne 0x438ef0
jmp 0x438ef2
mov ebx, dword [ebp + 0x18]
jmp 0x43861b
xor edx, edx
jmp 0x438ef2