Function at 0x402f70
Capabilities:
Encode data using xor

Disassembly:
push ebx
push edi
push esi
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov edx, dword [0x47f2f0]
test edx, edx
jne 0x403b81
movaps xmm0, xmmword [0x45f5f0]
xorps xmm0, xmmword [0x45b910]
movaps xmmword [0x45f9f0], xmm0
movaps xmm0, xmmword [0x45f600]
xorps xmm0, xmmword [0x45b920]
movaps xmmword [0x45fa00], xmm0
movaps xmm0, xmmword [0x45f610]
xorps xmm0, xmmword [0x45b930]
movaps xmmword [0x45fa10], xmm0
movaps xmm0, xmmword [0x45f620]
xorps xmm0, xmmword [str._G_f]
movaps xmmword [0x45fa20], xmm0
movaps xmm0, xmmword [0x45f630]
xorps xmm0, xmmword [0x45b950]
movaps xmmword [0x45fa30], xmm0
mov edx, dword [0x45f640]
lea esi, [edx + edx]
and esi, 0x93d44a3a
neg esi
add edx, esi
add edx, 0x49ea251d
movsd xmm0, qword [0x45f644]
xorps xmm0, xmmword [0x45b960]
mov dword [0x45fa40], edx
mov edx, 0x8387690d
xor edx, dword [0x45f64c]
movlps qword [0x45fa44], xmm0
mov dword [0x45fa4c], edx
mov edx, dword [0x45f650]
lea esi, [edx + edx]
and esi, 0xa3420e68
neg esi
add edx, esi
add edx, 0xd1a10734
mov dword [0x45fa50], edx
movsd xmm0, qword [0x45f654]
xorps xmm0, xmmword [0x45b970]
movlps qword [0x45fa54], xmm0
mov edx, 0x2e49501a
xor edx, dword [0x45f65c]
mov dword [0x45fa5c], edx
mov edx, dword [0x45f660]
lea esi, [edx + edx]
and esi, 0x87132092
neg esi
add edx, esi
add edx, 0xc3899049
movsd xmm0, qword [0x45f664]
xorps xmm0, xmmword [0x45b980]
mov dword [0x45fa60], edx
movlps qword [0x45fa64], xmm0
mov edx, dword [0x45f66c]
lea esi, [edx + edx]
and esi, 0xc41aa840
neg esi
add edx, esi
add edx, 0x620d5420
mov dword [0x45fa6c], edx
movaps xmm0, xmmword [0x45f670]
xorps xmm0, xmmword [0x45b990]
movaps xmmword [0x45fa70], xmm0
mov edx, 0x9db4ed55
xor edx, dword [0x45f680]
mov dword [0x45fa80], edx
mov edx, dword [0x45f684]
lea esi, [edx + edx]
and esi, 0x7d434d5e
neg esi
add edx, esi
add edx, 0xbea1a6af
movups xmm0, xmmword [0x45f688]
xorps xmm0, xmmword [0x45b9a0]
mov dword [0x45fa84], edx
mov edx, 0xb663b044
xor edx, dword [0x45f698]
movups xmmword [0x45fa88], xmm0
mov dword [0x45fa98], edx
mov edx, dword [0x45f69c]
lea esi, [edx + edx]
and esi, 0xde4e3c58
neg esi
add edx, esi
add edx, 0x6f271e2c
mov dword [0x45fa9c], edx
movsd xmm0, qword [0x45f6a0]
xorps xmm0, xmmword [0x45b9b0]
movlps qword [0x45faa0], xmm0
mov edx, 0x7025b7ad
xor edx, dword [0x45f6a8]
mov dword [0x45faa8], edx
mov edx, dword [0x45f6ac]
mov esi, edx
not esi
or esi, 0x212445d4
or edx, 0xdedbba2b
and edx, esi
mov dword [0x45faac], edx
movaps xmm0, xmmword [0x45f6b0]
xorps xmm0, xmmword [0x45b9c0]
movaps xmmword [0x45fab0], xmm0
mov edx, 0x3caafd2c
xor edx, dword [0x45f6c0]
mov dword [0x45fac0], edx
mov edx, dword [0x45f6c4]
lea esi, [edx + edx]
and esi, 0x5f282302
neg esi
add edx, esi
add edx, 0xaf941181
mov dword [0x45fac4], edx
movups xmm0, xmmword [0x45f6c8]
xorps xmm0, xmmword [0x45b9d0]
movups xmmword [0x45fac8], xmm0
movups xmm0, xmmword [0x45f6d8]
xorps xmm0, xmmword [0x45b9e0]
movups xmmword [0x45fad8], xmm0
mov edx, dword [0x45f6e8]
lea esi, [edx + edx]
and esi, 0x6e59a982
neg esi
add edx, esi
add edx, 0xb72cd4c1
mov dword [0x45fae8], edx
movups xmm0, xmmword [0x45f6ec]
xorps xmm0, xmmword [0x45b9f0]
movups xmmword [0x45faec], xmm0
mov edx, dword [0x45f6fc]
lea esi, [edx + edx]
and esi, 0xd2a0df56
neg esi
add edx, esi
add edx, 0xe9506fab
mov dword [0x45fafc], edx
movaps xmm0, xmmword [0x45f700]
xorps xmm0, xmmword [0x45ba00]
movaps xmmword [0x45fb00], xmm0
movaps xmm0, xmmword [0x45f710]
xorps xmm0, xmmword [0x45ba10]
movaps xmmword [0x45fb10], xmm0
movsd xmm0, qword [0x45f720]
xorps xmm0, xmmword [0x45ba20]
movlps qword [0x45fb20], xmm0
mov edx, 0xfd562745
xor edx, dword [0x45f728]
mov dword [0x45fb28], edx
mov edx, dword [0x45f72c]
lea esi, [edx + edx]
and esi, 0x72d8de16
neg esi
add edx, esi
add edx, 0x396c6f0b
mov dword [0x45fb2c], edx
mov edx, dword [0x45f730]
mov esi, edx
not esi
or esi, 0xbb680a5c
or edx, 0x4497f5a3
and edx, esi
movups xmm0, xmmword [0x45f734]
xorps xmm0, xmmword [0x45ba30]
mov dword [0x45fb30], edx
movups xmmword [0x45fb34], xmm0
mov edx, dword [0x45f744]
lea esi, [edx + edx]
and esi, 0xb7d235b8
neg esi
add edx, esi
add edx, 0xdbe91adc
mov dword [0x45fb44], edx
movups xmm0, xmmword [0x45f748]
xorps xmm0, xmmword [0x45ba40]
movups xmmword [0x45fb48], xmm0
movups xmm0, xmmword [0x45f758]
xorps xmm0, xmmword [0x45ba50]
movups xmmword [0x45fb58], xmm0
mov edx, 0xc718e931
xor edx, dword [0x45f768]
mov dword [0x45fb68], edx
mov edx, dword [0x45f76c]
lea esi, [edx + edx]
and esi, 0xd3c6197e
neg esi
add edx, esi
add edx, 0x69e30cbf
movaps xmm0, xmmword [0x45f770]
xorps xmm0, xmmword [0x45ba60]
mov dword [0x45fb6c], edx
movaps xmm1, xmmword [0x45f780]
xorps xmm1, xmmword [0x45ba70]
movaps xmmword [0x45fb70], xmm0
mov edx, 0xcadb7ffb
xor edx, dword [0x45f790]
movaps xmmword [0x45fb80], xmm1
mov dword [0x45fb90], edx
mov edx, dword [0x45f794]
lea esi, [edx + edx]
and esi, 0xf9cc03ec
neg esi
add edx, esi
add edx, 0xfce601f6
mov dword [0x45fb94], edx
movups xmm0, xmmword [0x45f798]
xorps xmm0, xmmword [0x45ba80]
movups xmmword [0x45fb98], xmm0
mov edx, 0x5e6f1e3
xor edx, dword [0x45f7a8]
mov dword [0x45fba8], edx
mov edx, dword [0x45f7ac]
lea esi, [edx + edx]
and esi, 0xe751664a
neg esi
add edx, esi
add edx, 0x73a8b325
movaps xmm0, xmmword [0x45f7b0]
xorps xmm0, xmmword [0x45ba90]
mov dword [0x45fbac], edx
movaps xmm1, xmmword [0x45f7c0]
xorps xmm1, xmmword [0x45baa0]
movaps xmmword [0x45fbb0], xmm0
movaps xmmword [0x45fbc0], xmm1
mov edx, dword [0x45f7d0]
lea esi, [edx + edx]
and esi, 0x19e4a500
neg esi
add edx, esi
add edx, 0xcf25280
mov dword [0x45fbd0], edx
movsd xmm0, qword [0x45f7d4]
xorps xmm0, xmmword [0x45bab0]
movlps qword [0x45fbd4], xmm0
mov edx, 0x22f814c8
xor edx, dword [0x45f7dc]
movdqa xmm0, xmmword [0x45f7e0]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x45bac0]
mov dword [0x45fbdc], edx
psubd xmm0, xmm1
paddd xmm0, xmmword [0x45bad0]
movdqa xmmword [0x45fbe0], xmm0
mov edx, dword [0x45f7f0]
lea esi, [edx + edx]
and esi, 0x8bce7238
neg esi
add edx, esi
add edx, 0x45e7391c
mov dword [0x45fbf0], edx
mov edx, 0x7178a233
xor edx, dword [0x45f7f4]
mov dword [0x45fbf4], edx
movq xmm0, qword [0x45f7f8]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x45bae0]
psubd xmm0, xmm1
paddd xmm0, xmmword [0x45baf0]
movq qword [0x45fbf8], xmm0
movaps xmm0, xmmword [0x45f800]
xorps xmm0, xmmword [0x45bb00]
movaps xmmword [0x45fc00], xmm0
mov edx, dword [0x45f810]
lea esi, [edx + edx]
and esi, 0xb7874128
neg esi
add edx, esi
add edx, 0xdbc3a094
movsd xmm0, qword [0x45f814]
xorps xmm0, xmmword [str.M_6N]
mov dword [0x45fc10], edx
movlps qword [0x45fc14], xmm0
mov edx, dword [0x45f81c]
lea esi, [edx + edx]
and esi, 0x716501b8
neg esi
add edx, esi
add edx, 0xb8b280dc
mov dword [0x45fc1c], edx
mov edx, 0xab63e0b1
xor edx, dword [0x45f820]
mov dword [0x45fc20], edx
mov edx, dword [0x45f824]
mov esi, edx
not esi
or esi, 0x849d711e
or edx, 0x7b628ee1
and edx, esi
mov dword [0x45fc24], edx
movsd xmm0, qword [0x45f828]
xorps xmm0, xmmword [0x45bb20]
movlps qword [0x45fc28], xmm0
mov edx, 0xec65c75c
xor edx, dword [0x45f830]
mov dword [0x45fc30], edx
mov edx, dword [0x45f834]
lea esi, [edx + edx]
and esi, 0x5a59091e
neg esi
add edx, esi
add edx, 0xad2c848f
mov dword [0x45fc34], edx
mov edx, 0x220cbeb0
xor edx, dword [0x45f838]
mov dword [0x45fc38], edx
mov edx, dword [0x45f83c]
lea esi, [edx + edx]
and esi, 0x257917e4
neg esi
add edx, esi
add edx, 0x12bc8bf2
mov dword [0x45fc3c], edx
movaps xmm0, xmmword [0x45f840]
xorps xmm0, xmmword [str._kPU_nB]
movaps xmmword [0x45fc40], xmm0
movaps xmm0, xmmword [0x45f850]
xorps xmm0, xmmword [0x45bb40]
movaps xmmword [0x45fc50], xmm0
movaps xmm0, xmmword [0x45f860]
xorps xmm0, xmmword [0x45bb50]
movaps xmmword [0x45fc60], xmm0
movsd xmm0, qword [0x45f870]
xorps xmm0, xmmword [0x45bb60]
movlps qword [0x45fc70], xmm0
mov edx, dword [0x45f878]
lea esi, [edx + edx]
and esi, 0x8142c10a
neg esi
add edx, esi
add edx, 0x40a16085
mov dword [0x45fc78], edx
movsd xmm0, qword [0x45f87c]
xorps xmm0, xmmword [0x45bb70]
movlps qword [0x45fc7c], xmm0
mov edx, 0xe71c1f84
xor edx, dword [0x45f884]
mov dword [0x45fc84], edx
mov edx, dword [0x45f888]
lea esi, [edx + edx]
and esi, 0x2b269538
neg esi
add edx, esi
add edx, 0x95934a9c
mov dword [0x45fc88], edx
movsd xmm0, qword [0x45f88c]
xorps xmm0, xmmword [0x45bb80]
movlps qword [0x45fc8c], xmm0
mov edx, dword [0x45f894]
lea esi, [edx + edx]
and esi, 0xdf0778ac
neg esi
add edx, esi
add edx, 0xef83bc56
mov dword [0x45fc94], edx
movups xmm0, xmmword [0x45f898]
xorps xmm0, xmmword [0x45bb90]
movups xmmword [0x45fc98], xmm0
movsd xmm0, qword [0x45f8a8]
xorps xmm0, xmmword [0x45bba0]
movlps qword [0x45fca8], xmm0
mov edx, dword [0x45f8b0]
lea esi, [edx + edx]
and esi, 0x41974560
neg esi
add edx, esi
add edx, 0x20cba2b0
mov dword [0x45fcb0], edx
movups xmm0, xmmword [0x45f8b4]
xorps xmm0, xmmword [0x45bbb0]
movups xmmword [0x45fcb4], xmm0
mov edx, dword [0x45f8c4]
lea esi, [edx + edx]
and esi, 0xb13fd686
neg esi
add edx, esi
add edx, 0x589feb43
mov dword [0x45fcc4], edx
movups xmm0, xmmword [0x45f8c8]
xorps xmm0, xmmword [0x45bbc0]
movsd xmm1, qword [0x45f8d8]
xorps xmm1, xmmword [0x45bbd0]
movq xmm2, qword [0x45f8e0]
movdqa xmm3, xmm2
paddd xmm3, xmm2
pand xmm3, xmmword [0x45bbe0]
movups xmmword [0x45fcc8], xmm0
psubd xmm2, xmm3
paddd xmm2, xmmword [0x45bbf0]
movlps qword [0x45fcd8], xmm1
movups xmm0, xmmword [0x45f8e8]
xorps xmm0, xmmword [0x45bc00]
movq qword [0x45fce0], xmm2
mov edx, 0xb6a02654
xor edx, dword [0x45f8f8]
movups xmmword [0x45fce8], xmm0
mov dword [0x45fcf8], edx
mov edx, dword [0x45f8fc]
mov esi, edx
not esi
or esi, 0xad9dad0
or edx, 0xf526252f
and edx, esi
mov dword [0x45fcfc], edx
movsd xmm0, qword [0x45f900]
xorps xmm0, xmmword [0x45bc10]
movlps qword [0x45fd00], xmm0
mov edx, dword [0x45f908]
lea esi, [edx + edx]
and esi, 0x42204ab4
neg esi
add edx, esi
add edx, 0xa110255a
mov dword [0x45fd08], edx
movsd xmm0, qword [0x45f90c]
xorps xmm0, xmmword [0x45bc20]
movlps qword [0x45fd0c], xmm0
mov edx, dword [0x45f914]
lea esi, [edx + edx]
and esi, 0x41754be8
neg esi
add edx, esi
add edx, 0xa0baa5f4
mov dword [0x45fd14], edx
movsd xmm0, qword [0x45f918]
xorps xmm0, xmmword [0x45bc30]
mov edx, 0xb8d86da
xor edx, dword [0x45f920]
movq xmm1, qword [0x45f924]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x45bc40]
movlps qword [0x45fd18], xmm0
psubd xmm1, xmm2
paddd xmm1, xmmword [0x45bc50]
mov dword [str.wge__], edx
movq qword [0x45fd24], xmm1
mov edx, dword [0x45f92c]
lea esi, [edx + edx]
and esi, 0x8d4b3a6e
neg esi
add edx, esi
add edx, 0x46a59d37
mov dword [0x45fd2c], edx
mov edx, 0x6f77e3f7
xor edx, dword [0x45f930]
mov dword [0x45fd30], edx
mov edx, dword [0x45f934]
lea esi, [edx + edx]
and esi, 0x55a23a2a
neg esi
add edx, esi
add edx, 0x2ad11d15
movups xmm0, xmmword [0x45f938]
xorps xmm0, xmmword [0x45bc60]
mov dword [0x45fd34], edx
movups xmmword [0x45fd38], xmm0
mov edx, dword [0x45f948]
lea esi, [edx + edx]
and esi, 0xa6fb21ac
neg esi
add edx, esi
add edx, 0x537d90d6
mov dword [0x45fd48], edx
movups xmm0, xmmword [0x45f94c]
xorps xmm0, xmmword [0x45bc70]
movups xmmword [0x45fd4c], xmm0
movsd xmm0, qword [0x45f95c]
xorps xmm0, xmmword [0x45bc80]
movlps qword [0x45fd5c], xmm0
mov edx, 0xe589abd2
xor edx, dword [0x45f964]
mov dword [0x45fd64], edx
mov edx, dword [0x45f968]
lea esi, [edx + edx]
and esi, 0xc7da92ca
neg esi
add edx, esi
add edx, 0x63ed4965
mov dword [0x45fd68], edx
mov edx, dword [0x45f96c]
mov esi, edx
not esi
or esi, 0xdc3b10a6
or edx, 0x23c4ef59
and edx, esi
mov dword [0x45fd6c], edx
mov edx, 0x10d85d46
xor edx, dword [0x45f970]
mov dword [0x45fd70], edx
mov edx, dword [0x45f974]
lea esi, [edx + edx]
and esi, 0x24cebdaa
neg esi
add edx, esi
add edx, 0x92675ed5
mov dword [0x45fd74], edx
movups xmm0, xmmword [0x45f978]
xorps xmm0, xmmword [0x45bc90]
movups xmmword [0x45fd78], xmm0
movups xmm0, xmmword [0x45f988]
xorps xmm0, xmmword [0x45bca0]
movups xmmword [0x45fd88], xmm0
mov edx, dword [0x45f998]
lea esi, [edx + edx]
and esi, 0x6351cca6
neg esi
add edx, esi
add edx, 0xb1a8e653
mov dword [0x45fd98], edx
movups xmm0, xmmword [0x45f99c]
xorps xmm0, xmmword [0x45bcb0]
movups xmmword [0x45fd9c], xmm0
mov edx, 0x16d4a8e0
xor edx, dword [0x45f9ac]
mov dword [0x45fdac], edx
mov edx, dword [0x45f9b0]
lea esi, [edx + edx]
and esi, 0xe977d2ce
neg esi
add edx, esi
add edx, 0xf4bbe967
mov dword [0x45fdb0], edx
movsd xmm0, qword [0x45f9b4]
xorps xmm0, xmmword [0x45bcc0]
movlps qword [0x45fdb4], xmm0
mov edx, 0xeb874059
xor edx, dword [0x45f9bc]
mov dword [0x45fdbc], edx
mov edx, dword [0x45f9c0]
lea esi, [edx + edx]
and esi, 0xcf1973ae
neg esi
add edx, esi
add edx, 0x678cb9d7
mov dword [0x45fdc0], edx
movups xmm0, xmmword [0x45f9c4]
xorps xmm0, xmmword [0x45bcd0]
mov edx, 0x2c38ed2b
xor edx, dword [0x45f9d4]
movq xmm1, qword [0x45f9d8]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x45bce0]
movups xmmword [0x45fdc4], xmm0
psubd xmm1, xmm2
paddd xmm1, xmmword [0x45bcf0]
mov dword [str._f], edx
movq qword [0x45fdd8], xmm1
mov edx, dword [0x45f9e0]
lea esi, [edx + edx]
and esi, 0x69344314
neg esi
add edx, esi
add edx, 0x349a218a
mov dword [0x45fde0], edx
movsd xmm0, qword [0x45f9e4]
xorps xmm0, xmmword [0x45bd00]
movlps qword [0x45fde4], xmm0
mov edx, 0xd588d26a
xor edx, dword [0x45f9ec]
mov dword [0x45fdec], edx
mov edx, dword [esp + 0x14]
mov dword [0x47f2f0], 1
not ecx
cmp eax, 4
jb 0x403bf2
nop word cs:[eax + eax]
mov ebx, ecx
xor cl, byte [edx]
shr ebx, 8
movzx ecx, cl
xor ebx, dword [ecx*4 + 0x45f9f0]
mov ecx, ebx
xor bl, byte [edx + 1]
shr ecx, 8
movzx esi, bl
xor ecx, dword [esi*4 + 0x45f9f0]
mov ebx, ecx
xor cl, byte [edx + 2]
shr ebx, 8
movzx ecx, cl
xor ebx, dword [ecx*4 + 0x45f9f0]
mov ecx, ebx
xor bl, byte [edx + 3]
shr ecx, 8
movzx esi, bl
xor ecx, dword [esi*4 + 0x45f9f0]
add edx, 4
add eax, 0xfffffffc
cmp eax, 3
ja 0x403ba0
test eax, eax
je 0x403c03
test al, 1
jne 0x403c07
mov esi, eax
cmp eax, 1
jne 0x403c23
jmp 0x403c5c
mov ebx, ecx
jmp 0x403c5c
mov ebx, ecx
xor cl, byte [edx]
shr ebx, 8
movzx ecx, cl
xor ebx, dword [ecx*4 + 0x45f9f0]
inc edx
lea esi, [eax - 1]
mov ecx, ebx
cmp eax, 1
je 0x403c5c
xor eax, eax
mov ebx, ecx
nop word [eax + eax]
mov ecx, ebx
shr ecx, 8
xor bl, byte [edx + eax]
movzx edi, bl
xor ecx, dword [edi*4 + 0x45f9f0]
mov ebx, ecx
shr ebx, 8
xor cl, byte [edx + eax + 1]
movzx ecx, cl
xor ebx, dword [ecx*4 + 0x45f9f0]
add eax, 2
cmp esi, eax
jne 0x403c30
lea eax, [ebx + ebx]
not eax
add eax, ebx
pop esi
pop edi
pop ebx
ret