Function at 0x402096
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push esi
push edi
sub esp, 0x10
xorps xmm0, xmm0
movups xmmword [esp], xmm0
call fcn.0040132a
movaps xmm0, xmmword [0x4188b0]
movups xmmword [esp], xmm0
call fcn.0040132a
movsd xmm0, qword [0x418760]
movsd qword [esp + 8], xmm0
xorps xmm0, xmm0
movsd qword [esp], xmm0
call fcn.00401418
movaps xmm0, xmmword [0x418830]
movups xmmword [esp], xmm0
call fcn.0040132a
movaps xmm0, xmmword [0x418840]
movups xmmword [esp], xmm0
call fcn.00401418
movaps xmm0, xmmword [0x418850]
movups xmmword [esp], xmm0
call fcn.0040132a
movaps xmm0, xmmword [0x418860]
movups xmmword [esp], xmm0
call fcn.00401418
movaps xmm0, xmmword [0x418870]
movups xmmword [esp], xmm0
call fcn.0040132a
movaps xmm0, xmmword [0x418880]
movups xmmword [esp], xmm0
call fcn.0040132a
movaps xmm0, xmmword [0x418890]
movups xmmword [esp], xmm0
call fcn.0040132a
xor edi, edi
mov esi, 0x7ff00000
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], esi
movsd xmm0, qword [ebp - 0x20]
movsd qword [esp + 8], xmm0
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], esi
movsd xmm0, qword [ebp - 0x18]
movsd qword [esp], xmm0
call fcn.0040132a
mov eax, 0xfff00000
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], eax
movsd xmm0, qword [ebp - 0x20]
mov dword [ebp - 0x14], eax
movsd qword [esp + 8], xmm0
mov dword [ebp - 0x18], edi
movsd xmm0, qword [ebp - 0x18]
movsd qword [esp], xmm0
call fcn.0040132a
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0xfff00000
movsd xmm0, qword [ebp - 0x20]
movsd qword [esp + 8], xmm0
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], esi
movsd xmm0, qword [ebp - 0x18]
movsd qword [esp], xmm0
call fcn.00401418
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0xfff00000
movsd xmm0, qword [ebp - 0x20]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x418760]
movsd qword [esp], xmm0
call fcn.00401418
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0xfff00000
movsd xmm0, qword [ebp - 0x20]
movsd qword [esp + 8], xmm0
xorps xmm0, xmm0
movsd qword [esp], xmm0
call fcn.00401418
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0xfff00000
movsd xmm0, qword [ebp - 0x20]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x418758]
movsd qword [esp], xmm0
call fcn.00401418
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0xfff00000
movsd xmm0, qword [ebp - 0x20]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x4186c8]
movsd qword [esp], xmm0
call fcn.00401418
call fcn.00401675
pop ecx
pop ecx
fstp qword [esp]
call fcn.00401675
push ecx
push ecx
fstp qword [esp]
call fcn.0040132a
call fcn.00401675
pop ecx
pop ecx
fstp qword [esp]
call fcn.00401675
fstp qword [ebp - 0x20]
movsd xmm0, qword [ebp - 0x20]
xorps xmm0, xmmword [0x4188b0]
push ecx
push ecx
movsd qword [esp], xmm0
call fcn.0040132a
call fcn.00401675
fstp qword [ebp - 0x20]
movsd xmm0, qword [ebp - 0x20]
add esp, 8
xorps xmm0, xmmword [0x4188b0]
movsd qword [esp], xmm0
call fcn.00401675
push ecx
push ecx
fstp qword [esp]
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], 0x2a
mov dword [ebp - 0x1c], esi
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push 0x11
pop esi
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], 0x2a
mov dword [ebp - 0x1c], 0xfff00000
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0xfff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], 0x2a
mov dword [ebp - 0x1c], 0xfff00000
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], 0x2a
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0xfff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 0x10
mov dword [ebp - 4], edi
mov esi, edi
mov eax, edi
mov dword [ebp - 0x1c], edi
cmp esi, 2
jae 0x40256b
add eax, edi
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, ecx
mov dword [ebp - 0x10], ecx
not eax
cmovae edx, ecx
mov dword [ebp - 0xc], eax
mov eax, edx
not eax
mov dword [ebp - 0x14], edx
and eax, 0xfffff
mov dword [ebp - 8], eax
lea eax, [edi + esi]
xor edi, edi
bts edi, eax
xor esi, esi
cmp eax, 0x20
push edx
cmovae esi, edi
xor edi, esi
cmp eax, 0x40
push ecx
push 0
cmovae esi, edi
call fcn.00401550
pop ecx
fstp qword [esp]
push esi
push edi
push 0
call fcn.00401550
pop ecx
fstp qword [esp]
call fcn.0040132a
push dword [ebp - 0x14]
push dword [ebp - 0x10]
push 0
call fcn.00401550
add esp, 0x14
fstp qword [esp]
push esi
push edi
push 1
call fcn.00401550
pop ecx
fstp qword [esp]
call fcn.0040132a
push dword [ebp - 8]
not esi
not edi
push dword [ebp - 0xc]
and esi, 0xfffff
push 0
call fcn.00401550
add esp, 0x14
fstp qword [esp]
push esi
push edi
push 0
call fcn.00401550
pop ecx
fstp qword [esp]
call fcn.0040132a
push dword [ebp - 8]
push dword [ebp - 0xc]
push 0
call fcn.00401550
add esp, 0x14
fstp qword [esp]
push esi
push edi
push 1
call fcn.00401550
pop ecx
fstp qword [esp]
call fcn.0040132a
mov esi, dword [ebp - 4]
add esp, 0x10
mov ecx, dword [ebp - 0x10]
inc esi
mov edx, dword [ebp - 0x14]
mov dword [ebp - 4], esi
push 0
pop edi
cmp esi, 2
jb 0x40249c
mov eax, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, 0x34
jb 0x402463
inc esi
mov dword [ebp - 4], esi
cmp esi, 0x34
jb 0x40245e
push ecx
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff80000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push 0x11
pop esi
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm2, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm1
movsd qword [esp], xmm2
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff40000
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff20000
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff10000
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff08000
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff04000
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff02000
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff01000
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff00800
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff00400
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff00200
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff00100
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
or dword [ebp - 0x20], 0xffffffff
add esp, 8
mov dword [ebp - 0x1c], 0x7ffff0ff
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
push ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], 0xfff00000
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
add esp, 8
mov dword [ebp - 0x20], 0xffffff0f
mov dword [ebp - 0x1c], 0x7fffffff
movsd xmm2, qword [ebp - 0x20]
movsd qword [esp], xmm2
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
mov dword [ebp - 0x20], esi
mov esi, 0xfff00000
push ecx
mov dword [ebp - 0x1c], esi
movsd xmm1, qword [ebp - 0x20]
push ecx
movsd qword [esp], xmm1
call fcn.0040105a
pop ecx
pop ecx
test al, al
je 0x402b75
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.0040132a
pop ecx
pop ecx
xorps xmm0, xmm0
movsd qword [esp], xmm0
call fcn.00401675
push ecx
push ecx
fstp qword [esp]
call fcn.00401418
movsd xmm0, qword [0x418760]
pop ecx
pop ecx
movsd qword [esp], xmm0
call fcn.00401675
push ecx
push ecx
fstp qword [esp]
call fcn.00401418
movsd xmm0, qword [0x418680]
pop ecx
pop ecx
movsd qword [esp], xmm0
call fcn.00401675
push ecx
push ecx
fstp qword [esp]
call fcn.00401418
movsd xmm0, qword [0x4187e0]
pop ecx
pop ecx
movsd qword [esp], xmm0
call fcn.00401675
push ecx
push ecx
fstp qword [esp]
call fcn.00401418
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0x7ff00000
movsd xmm0, qword [ebp - 0x20]
movsd qword [esp], xmm0
call fcn.00401675
push ecx
push ecx
fstp qword [esp]
call fcn.00401418
add esp, 8
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], esi
movsd xmm0, qword [ebp - 0x20]
movsd qword [esp], xmm0
call fcn.00401675
push ecx
push ecx
fstp qword [esp]
call fcn.00401418
add esp, 0x10
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov esi, 0x135
push esi
push str.c:_buildsmoz2_slavem_in_w32_d_0000000000000000000_build_srcobj_firefoxdistincludemozilla_FloatingPoint.h
push str.IsNaN_result_
call fcn.00405466
add esp, 0xc
int3