Function at 0x10003f50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x774
mov eax, dword [0x100250b4]
xor eax, esp
mov dword [esp + 0x770], eax
mov edx, dword [0x10026678]
push ebx
push esi
push edi
mov edi, ecx
mov dword [esp + 0x40], edi
test edx, edx
je 0x10004912
mov eax, dword [edx + 0x2c]
xor eax, 0x13855c
mov dword [esp + 0x28], 0
jbe 0x10004912
mov esi, dword [esp + 0x28]
xor ecx, ecx
nop dword [eax]
mov edx, dword [0x10026678]
mov eax, dword [edx + 0x2c]
xor eax, 0x13855c
cmp eax, ecx
jbe 0x100048f8
test ecx, ecx
jle 0x100048f8
mov eax, dword [edx + 0x44]
xor eax, 0x30fd16
mov ebx, dword [eax + ecx*4]
mov dword [esp + 0x38], ebx
test ebx, ebx
je 0x100048f8
cmp ebx, dword [0x100285e8]
je 0x100048f8
mov eax, dword [ebx + 0x210]
cmp eax, 0x20
je 0x10003ff5
cmp eax, 0x21
jne 0x100044e5
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x100044e5
mov eax, dword [0x100285e8]
movq xmm0, qword [eax + 0x24]
mov eax, dword [eax + 0x2c]
movq qword [esp + 0x5c], xmm0
movq xmm0, qword [ebx + 0x24]
movq qword [esp + 0x50], xmm0
movss xmm0, dword [esp + 0x54]
subss xmm0, dword [esp + 0x60]
movss xmm3, dword [esp + 0x50]
subss xmm3, dword [esp + 0x5c]
mov dword [esp + 0x64], eax
mov eax, dword [ebx + 0x2c]
movaps xmm1, xmm0
movss dword [esp + 0x48], xmm0
mulss xmm1, xmm0
mov dword [esp + 0x58], eax
movss xmm2, dword [esp + 0x58]
movaps xmm0, xmm3
subss xmm2, dword [esp + 0x64]
mulss xmm0, xmm3
movss dword [esp + 0x44], xmm3
addss xmm1, xmm0
movss dword [esp + 0x4c], xmm2
movaps xmm0, xmm2
mulss xmm0, xmm2
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x10004090
sqrtsd xmm0, xmm0
jmp 0x10004095
call fcn.10019b50
cvtsd2ss xmm0, xmm0
lea eax, [esp + 0xc0]
mov edx, ebx
push eax
push 6
lea ecx, [esp + 0x88]
movss dword [esp + 0x44], xmm0
call fcn.10003630
mov eax, dword [ebx + 0x2c]
add esp, 8
movq xmm0, qword [ebx + 0x24]
mov dword [esp + 0xbc], eax
mov eax, dword [0x1002667c]
movq qword [esp + 0xb4], xmm0
push dword [eax + 0x50]
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0xbc]
push eax
call fcn.10003260
test al, al
je 0x100044e5
mov eax, dword [0x1002667c]
push dword [eax + 0x50]
lea eax, [esp + 0x9c]
push eax
lea eax, [esp + 0xc8]
push eax
call fcn.10003260
cmp dword [0x100266d8], 0
movss xmm2, dword [esp + 0x90]
movaps xmm0, xmm2
subss xmm0, dword [esp + 0x9c]
maxss xmm0, dword [0x10021f90]
movaps xmm4, xmm0
movss dword [esp + 0x2c], xmm0
divss xmm4, dword [0x10021f98]
movss dword [esp + 0x34], xmm4
je 0x10004263
movss xmm1, dword [esp + 0x8c]
subss xmm2, xmm0
movaps xmm0, xmm4
mov edx, esi
mulss xmm0, dword [0x10021f88]
push ecx
mov ecx, dword [0x1002667c]
movss dword [esp], xmm2
subss xmm1, xmm0
movss dword [esp + 0x34], xmm0
mov ecx, dword [ecx + 0x50]
movaps xmm3, xmm1
addss xmm3, xmm4
call fcn.10002090
movss xmm2, dword [esp + 0x94]
mov edx, esi
movss xmm1, dword [esp + 0x90]
subss xmm2, dword [esp + 0x30]
subss xmm1, dword [esp + 0x34]
mov ecx, dword [0x1002667c]
movaps xmm0, xmm2
addss xmm1, dword [esp + 0x38]
addss xmm0, dword [esp + 0x30]
mov ecx, dword [ecx + 0x50]
movaps xmm3, xmm1
movss dword [esp], xmm0
call fcn.10002090
movss xmm3, dword [esp + 0x90]
mov edx, esi
movss xmm2, dword [esp + 0x94]
subss xmm3, dword [esp + 0x34]
subss xmm2, dword [esp + 0x30]
mov ecx, dword [0x1002667c]
movaps xmm1, xmm3
addss xmm2, dword [esp + 0x30]
addss xmm1, dword [esp + 0x38]
mov ecx, dword [ecx + 0x50]
movss dword [esp], xmm2
call fcn.10002090
movss xmm2, dword [esp + 0x94]
mov edx, esi
subss xmm2, dword [esp + 0x30]
movss xmm1, dword [esp + 0x90]
subss xmm1, dword [esp + 0x34]
mov ecx, dword [0x1002667c]
movss dword [esp], xmm2
addss xmm2, dword [esp + 0x30]
mov ecx, dword [ecx + 0x50]
movaps xmm3, xmm1
call fcn.10002090
movss xmm2, dword [esp + 0x94]
add esp, 4
cmp dword [0x100266dc], 0
je 0x1000427e
mov edx, esi
mov ecx, ebx
call fcn.100037c0
movss xmm2, dword [esp + 0x90]
cmp dword [0x100266e0], 1
jne 0x100042c7
movss xmm0, dword [esp + 0x3c]
sub esp, 8
addss xmm2, dword [0x10021fa0]
cvtps2pd xmm0, xmm0
cvttss2si eax, xmm2
movsd qword [esp], xmm0
push str.__0.1f_
push 0xffffffffffffffff
push eax
cvttss2si eax, dword [esp + 0xa0]
push eax
call fcn.10001f30
movss xmm2, dword [esp + 0xa8]
add esp, 0x18
cmp dword [0x100266e4], 1
jne 0x10004402
movss xmm1, dword [ebx + 0x4ec]
movss xmm0, dword [0x10021fbc]
comiss xmm1, xmm0
jbe 0x100042ec
movaps xmm1, xmm0
minss xmm0, xmm1
mov eax, dword [0x1002667c]
movss xmm1, dword [0x10021f90]
mov ecx, 0xffffa500
cvttss2si edi, xmm2
mov ebx, 0xff00ff00
mov eax, dword [eax + 0x50]
mov dword [esp + 0x34], eax
push eax
maxss xmm1, xmm0
movss xmm0, dword [0x10021fb4]
cvttss2si esi, dword [esp + 0x90]
add edi, 0xe
lea edx, [edi - 1]
comiss xmm0, xmm1
movss xmm0, dword [0x10021fb0]
movss dword [esp + 0x40], xmm1
cmovae ebx, ecx
mov ecx, 0xffffff00
comiss xmm0, xmm1
movss xmm0, dword [0x10021fac]
cmovae ebx, ecx
mov ecx, 0xffff0000
comiss xmm0, xmm1
cmovae ebx, ecx
sub esp, 0xc
lea ecx, [esi - 1]
call fcn.10002280
movss xmm0, dword [esp + 0x4c]
add esp, 0x10
mulss xmm0, dword [0x10021fd0]
mov dword [esp + 0xa4], esi
mov dword [esp + 0xa8], edi
push 0x144
cvttss2si eax, xmm0
sub esi, eax
lea eax, [edi + 3]
mov dword [esp + 0xb0], esi
mov esi, dword [esp + 0x38]
mov dword [esp + 0xb4], eax
push esi
mov eax, dword [esi]
call dword [eax + 0x164]
mov eax, dword [esi]
push 1
push 0x1b
push esi
call dword [eax + 0xe4]
mov eax, dword [esi]
push 6
push 0x14
push esi
call dword [eax + 0xe4]
mov eax, dword [esi]
push 5
push 0x1b
push esi
call dword [eax + 0xe4]
mov eax, dword [esi]
push 1
push ecx
mov dword [esp], 0x3f800000
lea ecx, [esp + 0xac]
push ebx
push 1
push ecx
push 1
push esi
call dword [eax + 0xac]
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0x40]
cmp dword [0x100266e8], 1
jne 0x100044e5
mov esi, dword [ebx + 0x440]
lea eax, [esi + 1]
push eax
lea eax, [ebx + 0x400]
push eax
lea eax, [esp + 0xe0]
push eax
call fcn.10006f80
add esp, 0xc
xor ecx, ecx
test esi, esi
jle 0x10004450
nop word [eax + eax]
mov al, cl
sub al, 0x57
xor byte [esp + ecx + 0xd8], al
inc ecx
cmp ecx, esi
jl 0x10004440
lea eax, [esp + 0xd8]
push eax
lea eax, [esp + 0x21c]
push 0x10021ef8
push eax
call fcn.10005830
lea ecx, [esp + 0xe4]
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10004477
sub ecx, edx
lea eax, [ecx + 1]
push eax
lea eax, [esp + 0x35c]
push eax
push 0xffffffffffffffff
lea eax, [esp + 0x224]
push eax
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jle 0x100044e5
movss xmm0, dword [esp + 0x9c]
lea eax, [esp + 0x358]
subss xmm0, dword [0x10021fa4]
push eax
push 0xffffffffffffffff
cvttss2si eax, xmm0
movss xmm0, dword [esp + 0xa0]
subss xmm0, dword [0x10021f9c]
push eax
cvttss2si eax, xmm0
push eax
call fcn.10001ff0
add esp, 0x10
mov eax, dword [ebx + 0x210]
cmp eax, 0x20000
je 0x100044fd
cmp eax, 0x20001
jne 0x1000478d
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x1000478d
movss xmm1, dword [esp + 0x44]
movss xmm0, dword [esp + 0x48]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
movss xmm0, dword [esp + 0x4c]
mulss xmm0, xmm0
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x10004542
sqrtsd xmm0, xmm0
jmp 0x10004547
call fcn.10019b50
cvtsd2ss xmm0, xmm0
push edi
push 0x1002862c
push 0x10028638
movss dword [esp + 0x44], xmm0
call fcn.10003260
test al, al
je 0x1000478d
push edi
lea eax, [esp + 0x9c]
push eax
lea eax, [esp + 0xc8]
push eax
call fcn.10003260
test al, al
je 0x1000478d
movss xmm0, dword [esp + 0x38]
movss xmm1, dword [0x10021fc8]
comiss xmm1, xmm0
jbe 0x1000478d
cmp dword [0x10028618], 0
je 0x1000478d
cvtps2pd xmm0, xmm0
sub esp, 8
lea eax, [esp + 0x120]
movsd qword [esp], xmm0
push str.Zombie__0.0fM_
push eax
call fcn.10001d00
movss xmm0, dword [esp + 0xa0]
lea eax, [esp + 0x128]
addss xmm0, dword [0x10021fa8]
push eax
push 0xff000000
cvttss2si edi, xmm0
movss xmm0, dword [esp + 0xa4]
subss xmm0, dword [0x10021f9c]
push edi
cvttss2si esi, xmm0
lea eax, [esi - 1]
push eax
call fcn.10001e70
lea eax, [esp + 0x138]
push eax
push 0xff000000
lea eax, [esi + 1]
push edi
push eax
call fcn.10001e70
lea eax, [esp + 0x148]
push eax
push 0xff000000
lea eax, [edi - 1]
push eax
push esi
call fcn.10001e70
add esp, 0x40
lea eax, [esp + 0x118]
push eax
push 0xff000000
lea eax, [edi + 1]
push eax
push esi
call fcn.10001e70
lea eax, [esp + 0x128]
push eax
push 0xffff0000
push edi
push esi
call fcn.10001e70
movss xmm2, dword [esp + 0xb0]
add esp, 0x1c
movaps xmm1, xmm2
mov edi, dword [esp + 0x44]
subss xmm1, dword [esp + 0xa0]
mov esi, 0xffff0000
mov ecx, edi
mov edx, esi
maxss xmm1, dword [0x10021f90]
movaps xmm0, xmm1
movss dword [esp + 0x34], xmm1
divss xmm0, dword [0x10021f98]
subss xmm2, xmm1
movss xmm1, dword [esp + 0x90]
movaps xmm3, xmm0
movss dword [esp + 0x38], xmm0
mulss xmm3, dword [0x10021f88]
movss dword [esp], xmm2
subss xmm1, xmm3
movss dword [esp + 0x30], xmm3
movaps xmm3, xmm1
addss xmm3, xmm0
call fcn.10002090
movss xmm2, dword [esp + 0x94]
mov edx, esi
movss xmm1, dword [esp + 0x90]
subss xmm2, dword [esp + 0x34]
subss xmm1, dword [esp + 0x30]
movaps xmm0, xmm2
addss xmm1, dword [esp + 0x38]
addss xmm0, dword [esp + 0x34]
movaps xmm3, xmm1
movss dword [esp], xmm0
mov ecx, edi
call fcn.10002090
movss xmm3, dword [esp + 0x90]
mov edx, esi
movss xmm2, dword [esp + 0x94]
mov ecx, edi
subss xmm3, dword [esp + 0x30]
subss xmm2, dword [esp + 0x34]
movaps xmm1, xmm3
addss xmm2, dword [esp + 0x34]
addss xmm1, dword [esp + 0x38]
movss dword [esp], xmm2
call fcn.10002090
movss xmm2, dword [esp + 0x94]
mov edx, esi
subss xmm2, dword [esp + 0x34]
movss xmm1, dword [esp + 0x90]
mov ecx, edi
subss xmm1, dword [esp + 0x30]
movss dword [esp], xmm2
addss xmm2, dword [esp + 0x34]
movaps xmm3, xmm1
call fcn.10002090
add esp, 4
cmp dword [ebx + 0x210], 0x240005
jne 0x100048f0
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x100048f0
mov eax, dword [ebx + 0x2c]
movq xmm0, qword [ebx + 0x24]
movq qword [esp + 0x68], xmm0
movss xmm3, dword [esp + 0x68]
mov dword [esp + 0x70], eax
mov eax, dword [0x100285e8]
movss xmm2, dword [esp + 0x70]
movq xmm0, qword [eax + 0x24]
mov eax, dword [eax + 0x2c]
movq qword [esp + 0x74], xmm0
movss xmm0, dword [esp + 0x6c]
subss xmm0, dword [esp + 0x78]
subss xmm3, dword [esp + 0x74]
mov dword [esp + 0x7c], eax
subss xmm2, dword [esp + 0x7c]
movaps xmm1, xmm0
movss dword [esp + 0x48], xmm0
mulss xmm1, xmm0
movaps xmm0, xmm3
mulss xmm0, xmm3
movss dword [esp + 0x44], xmm3
movss dword [esp + 0x4c], xmm2
addss xmm1, xmm0
movaps xmm0, xmm2
mulss xmm0, xmm2
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x10004838
sqrtsd xmm0, xmm0
jmp 0x1000483d
call fcn.10019b50
mov eax, dword [ebx + 0x2c]
cvtsd2ss xmm0, xmm0
mov dword [esp + 0xd4], eax
lea eax, [esp + 0x8c]
push edi
push eax
lea eax, [esp + 0xd4]
push eax
movss dword [esp + 0x44], xmm0
movq xmm0, qword [ebx + 0x24]
movq qword [esp + 0xd8], xmm0
call fcn.10003260
test al, al
je 0x100048f0
movss xmm0, dword [esp + 0x38]
movss xmm1, dword [0x10021fc8]
comiss xmm1, xmm0
jbe 0x100048f0
cmp dword [0x100285f0], 0
je 0x100048f0
cvtps2pd xmm0, xmm0
sub esp, 8
lea eax, [esp + 0x518]
movsd qword [esp], xmm0
push dword [ebx + 0x394]
push str._s___0.1fm_
push eax
call fcn.10005870
movss xmm0, dword [esp + 0xa4]
lea eax, [esp + 0x524]
addss xmm0, dword [0x10021fa0]
add esp, 0x14
push eax
cvttss2si eax, xmm0
push 0xff00ff22
push eax
cvttss2si eax, dword [esp + 0x98]
push eax
call fcn.10001f30
add esp, 0x10
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x28]
mov eax, dword [0x10026678]
inc ecx
mov dword [esp + 0x28], ecx
mov eax, dword [eax + 0x2c]
xor eax, 0x13855c
cmp ecx, eax
jb 0x10003fa0
mov ecx, dword [esp + 0x77c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.100058bd
mov esp, ebp
pop ebp
ret