Function at 0x435590
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 eax, dword [ebp + 0x20]
mov dword [esp + 0x40], eax
pxor xmm0, xmm0
movdqa xmmword [esp + 0x50], xmm0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 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 + 0x2c], eax
xor eax, eax
mov ecx, 0
mov dword [esp + 0x24], edx
test dl, 8
jne 0x435630
push 0
push dword [edi + 0x14]
mov eax, dword [ebp + 0xc]
push dword [eax + 0x6c]
push dword [eax + 4]
call fcn.004236c0
add esp, 0x10
mov ecx, edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x10], edi
movzx ecx, byte [edi + 0x64]
mov esi, 1
shl esi, cl
lea ebx, [esi - 1]
mov eax, esi
neg eax
mov ecx, eax
sar ecx, 0x1f
and ecx, dword [ebp + 0x30]
mov edx, dword [ebp + 0x2c]
and edx, eax
mov edi, ebx
sar edi, 0x1f
mov dword [esp + 0x14], edi
and edi, dword [ebp + 0x20]
mov dword [esp + 0xc], ebx
and ebx, dword [ebp + 0x1c]
or edx, ebx
mov dword [esp + 0x74], edx
or ecx, edi
mov dword [esp + 0x78], ecx
mov ecx, eax
and ecx, 0x7fff
mov dword [esp + 0x48], ecx
and eax, 0x8000
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x28]
mov dword [esp + 0x20], eax
mov edx, dword [ebp + 0x24]
cmp dword [ebp + 0x14], 0
je 0x435785
cmp esi, 2
jl 0x435785
mov eax, dword [ebp + 0x14]
test byte [eax + 0x14], 2
mov eax, dword [eax + 0x10]
mov ecx, dword [esp + 0x48]
cmove ecx, dword [esp + 0x4c]
mov dword [esp + 0x28], eax
sub ecx, eax
cmp ecx, edx
mov eax, edx
cmovb edx, ecx
cmp dword [ebp + 0x28], 0
cmove ecx, eax
cmove ecx, edx
test ecx, ecx
je 0x43577b
sub esi, ebx
mov ebx, 0
sbb ebx, edi
and esi, dword [esp + 0xc]
and ebx, dword [esp + 0x14]
mov edx, esi
or edx, ebx
je 0x43577b
cmp esi, ecx
cmovae esi, ecx
test ebx, ebx
cmovne esi, ecx
mov dword [esp + 0xc], 0
mov ecx, dword [ebp + 0x14]
mov edx, dword [ecx + 8]
mov edi, dword [ecx + 0xc]
test byte [esp + 0x24], 8
jne 0x43578f
mov eax, dword [esp + 0x28]
add eax, edx
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x28]
adc edi, 0
add eax, 0xffffffff
adc edi, 0xffffffff
mov ecx, dword [esp + 0x34]
sub ecx, eax
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x44], edx
mov edx, ebx
sbb edx, edi
setb byte [esp + 0xc]
add eax, esi
adc edi, 0
cmp eax, dword [esp + 0x34]
sbb edi, ebx
setb bh
xor edi, edi
or bh, byte [esp + 0xc]
cmovne edx, edi
mov edi, dword [esp + 0x28]
cmove esi, ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edx
or esi, edx
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x74]
jne 0x435797
mov dword [esp + 0x14], 0
jmp 0x4357ad
mov dword [esp + 0x14], 0
jmp 0x4357b0
mov dword [esp + 0x14], esi
mov ebx, dword [esp + 0x74]
push edi
push edx
mov edi, dword [ebp + 0x10]
push edi
call fcn.00414fc0
add esp, 0xc
test eax, eax
je 0x43593a
mov edx, dword [ebp + 0x24]
mov edi, dword [ebp + 0x18]
test edi, edi
je 0x4358c7
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x64]
mov eax, 1
shl eax, cl
cmp eax, 2
jl 0x4358e1
test byte [edi + 0x14], 2
mov eax, dword [esp + 0x48]
cmove eax, dword [esp + 0x4c]
sub eax, dword [edi + 0x10]
cmp edx, eax
mov esi, eax
cmovb esi, edx
cmp dword [esp + 0x20], 0
cmovne esi, eax
test esi, esi
je 0x4358e1
mov ebx, edx
mov eax, dword [edi + 8]
mov edx, edi
mov edi, 0xffffffff
shl edi, cl
mov ecx, dword [edx + 0xc]
not edi
mov edx, eax
and edx, edi
sar edi, 0x1f
and edi, ecx
mov dword [esp + 0x14], edx
or edx, edi
je 0x4358d7
push ecx
push eax
push dword [ebp + 0x10]
call fcn.00414fc0
add esp, 0xc
test eax, eax
jne 0x436361
mov eax, dword [esp + 0x14]
cmp eax, esi
cmovae eax, esi
test edi, edi
cmovne eax, esi
mov ecx, dword [ebp + 0x18]
movdqu xmm0, xmmword [ecx]
movd xmm1, eax
pshufd xmm1, xmm1, 0x44
psubq xmm0, xmm1
movdqu xmmword [ecx], xmm0
add dword [ecx + 0x10], eax
mov dword [esp + 0x14], eax
sub ebx, eax
sbb dword [esp + 0x20], 0
push ecx
push 0
push dword [ebp + 0x10]
mov esi, ebx
call fcn.004152b0
add esp, 0xc
test eax, eax
jne 0x436361
push dword [ebp + 0x10]
call fcn.00414fe0
add esp, 4
test eax, eax
jne 0x436361
mov eax, dword [ebp + 0x18]
test byte [eax + 0x14], 2
jne 0x43677d
push 0
push 0
push dword [esp + 0x1c]
push dword [eax + 4]
push dword [eax]
push dword [esp + 0x24]
call fcn.0041c890
mov edx, esi
add esp, 0x18
test eax, eax
jne 0x436361
jmp 0x4358e1
mov ebx, dword [ebp + 0x14]
test ebx, ebx
jne 0x435a16
jmp 0x435e1f
mov dword [esp + 0x14], 0
mov edx, ebx
mov ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x435d0f
mov eax, dword [ebx + 0x14]
and eax, 2
mov edi, dword [ebp + 0x18]
mov ecx, dword [edi + 0x14]
and ecx, 2
cmp eax, ecx
jne 0x435a16
test byte [esp + 0x24], 2
je 0x435912
test eax, eax
jne 0x435a16
test byte [esp + 0x24], 4
jne 0x4359d0
test eax, eax
jne 0x4359d4
mov ecx, dword [esp + 0x24]
and ecx, 3
cmp ecx, 3
jne 0x435a16
jmp 0x4359d4
mov ecx, dword [esp + 0x14]
mov edx, dword [ebp + 0x14]
add dword [edx + 0x10], ecx
add dword [esp + 0x2c], ecx
mov esi, dword [esp + 0xc]
adc dword [esp + 0x40], esi
mov edi, dword [ebp + 0x24]
sub edi, ecx
sbb dword [esp + 0x20], esi
add ebx, ecx
mov dword [esp + 0x74], ebx
adc dword [esp + 0x78], esi
push edx
push 0
push dword [ebp + 0x10]
call fcn.004152b0
add esp, 0xc
test eax, eax
jne 0x436361
push dword [ebp + 0x10]
call fcn.00414fe0
add esp, 4
test eax, eax
jne 0x436361
mov esi, dword [ebp + 0x14]
test byte [esi + 0x14], 2
jne 0x436776
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x14]
sub eax, edx
sbb ecx, dword [esp + 0xc]
add eax, dword [esi + 0x10]
adc ecx, 0
push 0
push 0
push edx
push ecx
push eax
push dword [esp + 0x24]
call fcn.0041c890
mov edx, edi
add esp, 0x18
test eax, eax
jne 0x436361
jmp 0x4357b0
test eax, eax
je 0x435a16
mov esi, dword [ebx + 0x10]
mov dword [esp + 0xc], edx
add esi, edx
mov ecx, dword [esp + 0x20]
adc ecx, 0
add esi, dword [edi + 0x10]
adc ecx, 0
test eax, eax
mov eax, dword [esp + 0x48]
cmove eax, dword [esp + 0x4c]
xor edx, edx
cmp eax, esi
sbb edx, ecx
jb 0x435a12
push dword [ebx + 0xc]
push dword [ebx + 8]
push dword [ebp + 0x10]
call fcn.00414fc0
add esp, 0xc
test eax, eax
je 0x435a40
mov edx, dword [esp + 0xc]
test byte [ebx + 0x14], 2
jne 0x435bb6
xor ecx, ecx
test byte [esp + 0x24], 1
je 0x435a30
mov ecx, dword [esp + 0x4c]
sub ecx, dword [ebx + 0x10]
test byte [esp + 0x24], 4
je 0x435bc8
jmp 0x435d05
mov eax, dword [ebx]
add eax, dword [ebx + 0x10]
mov ecx, dword [ebx + 4]
adc ecx, 0
mov edx, dword [edi]
mov edi, dword [edi + 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 + 0x30]
call fcn.0040f9b0
add esp, 0x24
test eax, eax
jne 0x435ba5
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov ecx, edi
mov dword [esp + 0x28], edx
add ecx, edx
mov edx, eax
mov dword [esp + 0x44], ebx
adc edx, ebx
mov ebx, dword [ebp + 0x18]
xor ecx, dword [ebx]
xor edx, dword [ebx + 4]
or edx, ecx
jne 0x435ba5
mov ecx, dword [esp + 0x10]
mov edx, dword [ebp + 0xc]
push eax
push edi
push dword [esp + 0x4c]
push dword [esp + 0x34]
call fcn.00436790
add esp, 0x10
test eax, eax
jne 0x436361
mov eax, dword [ebp + 0x14]
mov dword [eax + 0x10], esi
push eax
push 0
push dword [ebp + 0x10]
call fcn.004152b0
add esp, 0xc
test eax, eax
jne 0x436361
push dword [ebp + 0x10]
call fcn.00414fe0
add esp, 4
test eax, eax
jne 0x436361
lea eax, [esp + 0x50]
push eax
push 7
push dword [ebp + 0x10]
call fcn.004147b0
add esp, 0xc
test eax, eax
jne 0x436361
push 0
push dword [ebp + 0x10]
call fcn.00415b90
add esp, 8
test eax, eax
jne 0x436361
push dword [ebp + 0x10]
call fcn.00414fe0
add esp, 4
test eax, eax
jne 0x436361
mov ecx, dword [ebp + 0x14]
movsd xmm0, qword [ecx + 0x10]
mov eax, dword [ebp + 0x18]
movsd qword [eax + 0x10], xmm0
movdqu xmm0, xmmword [ecx]
movdqu xmmword [eax], xmm0
mov dword [esp + 0x34], 0
test byte [esp + 0x24], 1
je 0x436365
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x14]
and eax, 2
jne 0x436365
push 0
push 0
push dword [esp + 0x14]
push dword [esp + 0x4c]
push dword [esp + 0x3c]
push dword [esp + 0x24]
call fcn.0041c890
add esp, 0x18
test eax, eax
jne 0x436361
jmp 0x436365
mov edx, dword [esp + 0xc]
mov ebx, dword [ebp + 0x14]
test byte [ebx + 0x14], 2
je 0x435a20
test byte [esp + 0x24], 2
jne 0x435d05
mov ecx, dword [esp + 0x48]
sub ecx, dword [ebx + 0x10]
mov esi, edx
mov eax, ebx
mov ebx, dword [esp + 0x24]
and ebx, 8
shr ebx, 3
cmp edx, ecx
mov edi, ecx
mov dword [esp + 0xc], edx
cmovb edi, edx
cmp dword [esp + 0x20], 0
cmovne edi, ecx
mov edx, dword [eax + 8]
add edx, dword [eax + 0x10]
mov esi, dword [eax + 0xc]
adc esi, 0
add edx, 0xffffffff
adc esi, 0xffffffff
mov eax, dword [esp + 0x34]
sub eax, edx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x30]
mov ecx, eax
sbb ecx, esi
mov dword [esp + 0x28], ecx
setb cl
or cl, bl
mov dword [esp + 0x98], edx
add edx, edi
mov dword [esp + 0x7c], esi
adc esi, 0
cmp edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x44]
sbb esi, eax
setb dl
xor esi, esi
or dl, cl
cmove esi, dword [esp + 0x28]
cmovne ebx, edi
mov eax, ebx
or eax, esi
je 0x435d01
mov edx, dword [esp + 0x10]
movzx ecx, byte [edx + 0x64]
mov eax, 1
shl eax, cl
cmp eax, 2
jl 0x435cca
mov edi, dword [esp + 0x98]
add edi, ebx
mov ecx, dword [esp + 0x7c]
adc ecx, esi
lea eax, [esp + 0x18]
push eax
mov dword [esp + 0x80], ecx
push ecx
push edi
push dword [ebp + 0xc]
push dword [ebp + 8]
push edx
call fcn.00433470
add esp, 0x18
test eax, eax
jne 0x436361
mov eax, dword [esp + 0x18]
or eax, dword [esp + 0x1c]
je 0x435cca
mov eax, dword [esp + 0x10]
movzx ecx, byte [eax + 0x64]
mov eax, 0xffffffff
shl eax, cl
not eax
and edi, eax
sar eax, 0x1f
mov ecx, dword [esp + 0x7c]
and ecx, eax
not edi
add ebx, edi
not ecx
adc esi, ecx
mov eax, ebx
or eax, esi
mov edx, dword [ebp + 0x14]
jne 0x435ccd
jmp 0x435d01
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]
mov edi, esi
lea esi, [esp + 0x18]
push edx
push esi
push 0
push edi
push ebx
push ecx
push eax
push 3
mov edi, dword [esp + 0x30]
push edi
call fcn.0040f9b0
add esp, 0x24
test eax, eax
je 0x435f82
mov edx, dword [esp + 0xc]
cmp dword [ebp + 0x18], 0
je 0x435e1f
mov ecx, dword [ebp + 0x18]
test byte [ecx + 0x14], 2
jne 0x435d34
xor eax, eax
test byte [esp + 0x24], 1
je 0x435d28
mov eax, dword [esp + 0x4c]
sub eax, dword [ecx + 0x10]
test byte [esp + 0x24], 4
je 0x435d46
jmp 0x435e1f
test byte [esp + 0x24], 2
jne 0x435e1f
mov eax, dword [esp + 0x48]
sub eax, dword [ecx + 0x10]
cmp edx, eax
mov esi, eax
cmovb esi, edx
cmp dword [esp + 0x20], 0
cmovne esi, eax
test esi, esi
je 0x435e1f
mov dword [esp + 0xc], edx
xor edi, edi
mov ebx, dword [esp + 0x10]
movzx ecx, byte [ebx + 0x64]
mov eax, 1
shl eax, cl
cmp eax, 2
jl 0x435de8
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
sub eax, esi
sbb ecx, 0
lea edx, [esp + 0x18]
push edx
push ecx
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
push ebx
call fcn.00433470
add esp, 0x18
test eax, eax
jne 0x436361
mov eax, dword [esp + 0x18]
or eax, dword [esp + 0x1c]
je 0x435de8
mov eax, dword [esp + 0x10]
movzx ecx, byte [eax + 0x64]
mov eax, 1
shl eax, cl
mov ecx, eax
sar ecx, 0x1f
mov edi, dword [ebp + 0x18]
mov edx, dword [edi + 8]
mov ebx, dword [edi + 0xc]
sub edx, esi
sbb ebx, 0
lea edi, [eax - 1]
and edx, edi
sar edi, 0x1f
and edi, ebx
sub edx, eax
sbb edi, ecx
add esi, edx
adc edi, 0
mov eax, esi
or eax, edi
je 0x435e1b
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
sub eax, esi
sbb ecx, edi
lea edx, [esp + 0x38]
lea ebx, [esp + 0x18]
push edx
push ebx
push 0
push edi
push esi
push ecx
push eax
push 3
mov esi, dword [esp + 0x30]
push esi
call fcn.0040f9b0
add esp, 0x24
test eax, eax
je 0x4360a3
mov edx, dword [esp + 0xc]
mov dword [esp + 0x34], 0
mov eax, edx
mov edi, dword [esp + 0x20]
or eax, edi
je 0x436365
mov eax, dword [esp + 0x10]
movzx ecx, byte [eax + 0x64]
mov esi, 1
shl esi, cl
lea ebx, [esi - 1]
mov ecx, ebx
sar ecx, 0x1f
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x2c]
mov eax, edx
mov dword [esp + 0x28], ebx
and eax, ebx
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x40]
and edi, ecx
mov ebx, eax
or ebx, edi
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x40]
mov ebx, edx
je 0x4362cd
mov ebx, esi
sar ebx, 0x1f
sub esi, eax
sbb ebx, edi
and ebx, ecx
and esi, dword [esp + 0x28]
mov edi, dword [esp + 0xc]
cmp esi, edi
mov eax, edi
cmovb eax, esi
mov ecx, dword [esp + 0x20]
cmp ebx, ecx
cmovae esi, edi
cmove esi, eax
cmovae ebx, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], edx
lea eax, [esp + 0x18]
push eax
push edx
push ecx
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [esp + 0x24]
call fcn.00433470
add esp, 0x18
test eax, eax
jne 0x436361
mov edx, edi
mov dword [esp + 0x28], ebx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, eax
or edx, ecx
mov dword [esp + 0x14], edi
mov edx, dword [esp + 0x20]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x40]
mov ebx, edx
je 0x4362cd
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
mov dword [esp + 0x60], esi
mov eax, dword [esp + 0x24]
not eax
and eax, 2
mov dword [esp + 0x64], eax
push dword [esp + 0x5c]
push dword [esp + 0x5c]
mov ebx, dword [ebp + 0x10]
push ebx
call fcn.00414fc0
add esp, 0xc
lea eax, [esp + 0x80]
push eax
push 0
push ebx
call fcn.004147b0
add esp, 0xc
cmp eax, 0x7f2bb780
mov edi, esi
je 0x436209
test eax, eax
mov esi, dword [esp + 0x28]
jne 0x436361
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
jmp 0x436227
movzx ecx, byte [edi + 0x64]
mov byte [esp + 0x34], cl
mov eax, 1
shl eax, cl
mov edx, eax
sar edx, 0x1f
mov ecx, dword [esp + 0x38]
add ecx, eax
mov ebx, dword [esp + 0x3c]
adc ebx, edx
add ecx, 0xffffffff
adc ebx, 0xffffffff
mov esi, dword [esp + 0x18]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x1c]
push edx
push eax
push ebx
push ecx
call fcn.004236c0
add esp, 0x10
mov ebx, eax
mov dword [esp + 0x28], edx
movzx ecx, byte [esp + 0x34]
shl eax, cl
push 1
push eax
push esi
push dword [esp + 0x3c]
push edi
call fcn.00410090
add esp, 0x14
push dword [esp + 0x28]
push ebx
push dword [ebp + 0xc]
push edi
call fcn.004180d0
add esp, 0x10
test eax, eax
jne 0x436361
mov eax, dword [ebp + 0x14]
push dword [eax + 0xc]
push dword [eax + 8]
push dword [ebp + 0x10]
call fcn.00414fc0
mov esi, dword [esp + 0x18]
add esp, 0xc
test eax, eax
jne 0x436361
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x2c], eax
adc dword [esp + 0x40], ecx
sub esi, eax
sbb dword [esp + 0x20], ecx
mov ecx, dword [ebp + 0x14]
add dword [ecx + 0x10], eax
push ecx
push 0
push dword [ebp + 0x10]
call fcn.004152b0
add esp, 0xc
test eax, eax
jne 0x436361
push dword [ebp + 0x10]
call fcn.00414fe0
add esp, 4
test eax, eax
jne 0x436361
mov edx, esi
test byte [esp + 0x24], 1
je 0x435d05
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x14]
and eax, 2
jne 0x435d05
push 0
push 0
push dword [esp + 0x40]
push dword [esp + 0x28]
push dword [esp + 0x28]
push dword [esp + 0x24]
call fcn.0041c890
mov edx, esi
add esp, 0x18
test eax, eax
jne 0x436361
jmp 0x435d05
movzx edx, byte [esi + 0x64]
mov edi, 0xffffffff
mov ecx, edx
mov byte [esp + 0x30], dl
shl edi, cl
mov ecx, dword [esp + 0x18]
mov esi, edi
not esi
mov eax, ecx
and eax, edi
mov dword [esp + 0x34], eax
sar edi, 0x1f
mov eax, dword [esp + 0x1c]
and edi, eax
and ecx, esi
mov dword [esp + 0x28], ecx
sar esi, 0x1f
mov ebx, 1
mov ecx, edx
shl ebx, cl
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 + 0x28]
adc eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
push edx
push ebx
push eax
push ecx
call fcn.004236c0
add esp, 0x10
mov ebx, eax
mov dword [esp + 0x28], edx
movzx ecx, byte [esp + 0x30]
shl eax, cl
push 1
push eax
push edi
push dword [esp + 0x40]
mov esi, dword [esp + 0x20]
push esi
call fcn.00410090
add esp, 0x14
push dword [esp + 0x28]
push ebx
push dword [ebp + 0xc]
push esi
call fcn.004180d0
add esp, 0x10
test eax, eax
jne 0x436361
mov eax, dword [ebp + 0x18]
push dword [eax + 0xc]
push dword [eax + 8]
push dword [ebp + 0x10]
call fcn.00414fc0
mov esi, dword [esp + 0x18]
add esp, 0xc
test eax, eax
jne 0x436361
mov eax, dword [esp + 0x38]
sub esi, eax
mov ecx, dword [esp + 0x20]
sbb ecx, dword [esp + 0x3c]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp + 0x18]
movdqu xmm0, xmmword [ecx]
movq xmm1, qword [esp + 0x38]
pshufd xmm1, xmm1, 0x44
psubq xmm0, xmm1
movdqu xmmword [ecx], xmm0
add dword [ecx + 0x10], eax
push ecx
push 0
push dword [ebp + 0x10]
call fcn.004152b0
add esp, 0xc
test eax, eax
jne 0x436361
push dword [ebp + 0x10]
call fcn.00414fe0
add esp, 4
test eax, eax
jne 0x436361
mov edx, esi
test byte [esp + 0x24], 1
je 0x435e1f
mov eax, dword [ebp + 0x18]
mov eax, dword [eax + 0x14]
and eax, 2
jne 0x435e1f
mov eax, dword [esp + 0x14]
add eax, dword [esp + 0x38]
push 0
push 0
push eax
push dword [esp + 0x28]
push dword [esp + 0x28]
push dword [esp + 0x24]
call fcn.0041c890
mov edx, esi
add esp, 0x18
test eax, eax
jne 0x436361
jmp 0x435e1f
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
xor eax, eax
xor ecx, ecx
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x5c]
cmp dword [esp + 0x58], eax
sbb edx, ecx
setae al
movzx eax, al
lea ecx, [esp + 0x50]
push ecx
push eax
push dword [ebp + 0x10]
call fcn.004159c0
add esp, 0xc
test eax, eax
jne 0x436361
push dword [ebp + 0x10]
call fcn.00414fe0
mov ecx, dword [esp + 0x10]
add esp, 4
test eax, eax
jne 0x436361
test byte [esp + 0x24], 1
je 0x43629f
mov eax, dword [esp + 0x64]
and eax, 2
jne 0x43629f
push 0
push 0
push dword [esp + 0x68]
push dword [esp + 0x60]
push dword [esp + 0x60]
push dword [esp + 0x24]
call fcn.0041c890
mov ecx, dword [esp + 0x24]
add esp, 0x18
test eax, eax
jne 0x436361
mov eax, edi
add eax, dword [esp + 0x2c]
mov dword [esp + 0x44], eax
mov ebx, esi
mov edx, dword [esp + 0x40]
adc ebx, edx
sub ecx, edi
mov eax, esi
mov esi, dword [esp + 0x20]
sbb esi, eax
mov dword [esp + 0x14], ecx
mov eax, ecx
mov dword [esp + 0x30], esi
or eax, esi
je 0x436365
mov dword [esp + 0x40], ebx
mov eax, edx
mov edx, dword [esp + 0xc]
add edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x20]
adc edi, eax
mov eax, dword [esp + 0x10]
movzx ecx, byte [eax + 0x64]
mov eax, 0xffffffff
shl eax, cl
mov esi, eax
not esi
mov ebx, edx
and ebx, esi
sar esi, 0x1f
and esi, edi
mov ecx, ebx
or ecx, esi
je 0x436371
mov dword [esp + 0xc], edx
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x14]
cmp ebx, edi
mov ecx, edi
cmovb ecx, ebx
mov edx, dword [esp + 0x30]
cmp esi, edx
cmovae ebx, edi
cmove ebx, ecx
mov dword [esp + 0x2c], ebx
cmovae esi, edx
mov ecx, dword [esp + 0xc]
and ecx, eax
sar eax, 0x1f
mov edx, dword [esp + 0x20]
and edx, eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], edx
lea eax, [esp + 0x18]
push eax
push edx
push ecx
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [esp + 0x24]
call fcn.00433470
add esp, 0x18
test eax, eax
je 0x436652
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x24]
and eax, 2
mov ecx, eax
xor ecx, 2
test eax, eax
mov eax, dword [esp + 0x4c]
cmove eax, dword [esp + 0x48]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x64], ecx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], edi
jmp 0x4363fa
xor eax, eax
mov edi, dword [esp + 0x14]
mov dword [esp + 0x74], ebx
cmp ebx, edi
mov ecx, dword [esp + 0x78]
sbb ecx, dword [esp + 0x30]
jae 0x436361
mov eax, dword [esp + 0x10]
movzx ecx, byte [eax + 0x64]
mov eax, 0xffffffff
shl eax, cl
mov esi, eax
not esi
mov ebx, esi
sar ebx, 0x1f
and ebx, dword [esp + 0x5c]
and esi, dword [esp + 0x58]
mov ecx, esi
add ecx, dword [esp + 0x20]
mov edx, ebx
adc edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x4c]
cmp ecx, edi
cmovae ecx, edi
test edx, edx
cmovne ecx, edi
mov edx, eax
sar edx, 0x1f
and eax, dword [esp + 0x18]
and edx, dword [esp + 0x1c]
lea edi, [esp + 0x38]
push edi
lea edi, [esp + 0x1c]
push edi
mov edi, dword [esp + 0x18]
push 0
push 0
push ecx
push edx
push eax
push 0
push edi
call fcn.0040f9b0
add esp, 0x24
test eax, eax
jne 0x436361
mov dword [esp + 0x40], ebx
movzx ecx, byte [edi + 0x64]
mov byte [esp + 0x34], 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 + 0xc], ebx
mov ebx, dword [esp + 0x1c]
push edx
push eax
push edi
push ecx
call fcn.004236c0
add esp, 0x10
mov edi, eax
mov dword [esp + 0x48], edx
movzx ecx, byte [esp + 0x34]
shl eax, cl
push 1
push eax
push ebx
push dword [esp + 0x18]
push dword [esp + 0x20]
call fcn.00410090
add esp, 0x14
push dword [esp + 0x48]
push edi
mov edi, dword [esp + 0x18]
push dword [ebp + 0xc]
push edi
call fcn.004180d0
add esp, 0x10
test eax, eax
jne 0x436361
mov eax, dword [esp + 0x18]
add eax, esi
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x40]
adc ecx, ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
mov eax, dword [esp + 0x38]
sub eax, esi
mov dword [esp + 0x60], eax
push dword [esp + 0x5c]
push dword [esp + 0x5c]
mov edi, dword [ebp + 0x10]
push edi
call fcn.00414fc0
add esp, 0xc
lea eax, [esp + 0x80]
push eax
push 0
push edi
call fcn.004147b0
add esp, 0xc
cmp eax, 0x7f2bb780
je 0x436560
test eax, eax
jne 0x436361
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
jmp 0x43657a
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
xor eax, eax
xor ecx, ecx
mov edx, dword [esp + 0x5c]
cmp dword [esp + 0x58], eax
sbb edx, ecx
setae al
movzx eax, al
lea ecx, [esp + 0x50]
push ecx
push eax
mov edi, dword [ebp + 0x10]
push edi
call fcn.004159c0
add esp, 0xc
test eax, eax
jne 0x436361
push edi
call fcn.00414fe0
add esp, 4
test eax, eax
jne 0x436361
test byte [esp + 0x24], 1
mov edi, dword [esp + 0x10]
je 0x4365ea
mov eax, dword [esp + 0x64]
and eax, 2
jne 0x4365ea
push 0
push 0
push dword [esp + 0x40]
push dword [esp + 0x28]
push dword [esp + 0x28]
push edi
call fcn.0041c890
add esp, 0x18
test eax, eax
jne 0x436361
mov eax, edi
mov edi, dword [esp + 0x38]
sub edi, esi
mov esi, dword [esp + 0x3c]
sbb esi, ebx
mov ebx, dword [esp + 0x74]
add ebx, edi
adc dword [esp + 0x78], esi
sub dword [esp + 0x20], edi
sbb dword [esp + 0x2c], esi
add dword [esp + 0x58], edi
adc dword [esp + 0x5c], esi
add edi, dword [esp + 0x18]
adc esi, dword [esp + 0x1c]
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
push dword [eax + 0x10]
call fcn.00411820
add esp, 4
cmp edi, eax
sbb esi, edx
jb 0x4363e0
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
jmp 0x4363e0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, eax
or edx, ecx
je 0x436375
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x24]
not eax
and eax, 2
mov dword [esp + 0x64], eax
push dword [esp + 0x5c]
push dword [esp + 0x5c]
mov edi, dword [ebp + 0x10]
push edi
call fcn.00414fc0
add esp, 0xc
lea eax, [esp + 0x80]
push eax
push 0
push edi
call fcn.004147b0
add esp, 0xc
cmp eax, 0x7f2bb780
je 0x4366cb
test eax, eax
mov edi, dword [esp + 0x14]
jne 0x436361
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
jmp 0x4366e9
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
xor eax, eax
xor ecx, ecx
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x5c]
cmp dword [esp + 0x58], eax
sbb edx, ecx
setae al
movzx eax, al
lea ecx, [esp + 0x50]
push ecx
push eax
push dword [ebp + 0x10]
call fcn.004159c0
add esp, 0xc
test eax, eax
jne 0x436361
push dword [ebp + 0x10]
call fcn.00414fe0
add esp, 4
test eax, eax
jne 0x436361
test byte [esp + 0x24], 1
je 0x436759
mov eax, dword [esp + 0x64]
and eax, 2
jne 0x436759
push 0
push 0
push dword [esp + 0x68]
push dword [esp + 0x60]
push dword [esp + 0x60]
push dword [esp + 0x24]
call fcn.0041c890
add esp, 0x18
test eax, eax
jne 0x436361
sub edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
sbb ecx, esi
mov eax, edi
mov dword [esp + 0x30], ecx
or eax, ecx
jne 0x436375
jmp 0x436365
mov edx, edi
jmp 0x4357b0
mov edx, esi
jmp 0x4358e1