Function at 0x40b9e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov eax, dword [0x475010]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x30]
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x58], eax
push ebx
push esi
mov esi, dword [ebp + 0x24]
mov dword [ebp - 0x50], esi
push edi
mov edi, dword [ebp + 0x28]
cmp ecx, 2
je 0x40be75
cmp ecx, 0x10
ja 0x40be75
test cl, 1
jne 0x40be75
cmp edx, 7
jb 0x40be75
cmp edx, 0xd
ja 0x40be75
mov ebx, dword [ebp + 0x20]
cmp ebx, 0xff00
jae 0x40be75
sub cl, 2
mov dword [ebp - 0x3c], 0
mov al, 0xf
and cl, 0xfe
sub al, dl
shl cl, 2
mov ah, al
mov byte [ebp - 0x35], al
dec ah
cmp dword [ebp - 0x3c], ebx
push edx
push dword [ebp - 0x54]
sbb al, al
mov byte [ebp - 0x3d], ah
and al, 0x40
or cl, al
or cl, ah
lea eax, [ebp - 0x13]
push eax
mov byte [ebp - 0x14], cl
call fcn.00424f30
mov dl, byte [ebp - 0x35]
add esp, 0xc
mov eax, dword [ebp + 0x10]
test dl, dl
je 0x40bab2
lea ecx, [ebp - 5]
movzx edx, dl
mov byte [ecx], al
lea ecx, [ecx - 1]
shr eax, 8
sub edx, 1
jne 0x40baa5
test eax, eax
jne 0x40be75
xorps xmm0, xmm0
xor ecx, ecx
movups xmmword [ebp - 0x24], xmm0
mov edx, 0x10
nop dword [eax + eax]
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x40bad0
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.0040cba0
add esp, 0x14
test eax, eax
jne 0x40be7a
test ebx, ebx
je 0x40bbdd
mov eax, ebx
mov esi, 0xe
shr eax, 8
xorps xmm0, xmm0
cmp ebx, esi
movups xmmword [ebp - 0x14], xmm0
cmovb esi, ebx
mov byte [ebp - 0x14], al
push esi
push dword [ebp - 0x48]
lea eax, [ebp - 0x12]
mov byte [ebp - 0x13], bl
push eax
call fcn.00424f30
add dword [ebp - 0x48], esi
add esp, 0xc
sub ebx, esi
mov edx, 0x10
xor ecx, ecx
nop
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x40bb40
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.0040cba0
add esp, 0x14
test eax, eax
jne 0x40be7a
test ebx, ebx
je 0x40bbda
mov eax, dword [ebp - 0x48]
cmp ebx, 0x10
mov ecx, 0x10
mov esi, ebx
xorps xmm0, xmm0
cmova esi, ecx
push esi
push eax
lea eax, [ebp - 0x14]
push eax
movups xmmword [ebp - 0x14], xmm0
call fcn.00424f30
add esp, 0xc
mov edx, 0x10
xor ecx, ecx
nop
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x40bba0
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.0040cba0
add esp, 0x14
test eax, eax
jne 0x40be7a
mov eax, dword [ebp - 0x48]
add eax, esi
mov dword [ebp - 0x48], eax
sub ebx, esi
jne 0x40bb75
mov esi, dword [ebp - 0x50]
push dword [ebp - 0x4c]
mov al, byte [ebp - 0x3d]
push dword [ebp - 0x54]
mov byte [ebp - 0x34], al
lea eax, [ebp - 0x33]
push eax
call fcn.00424f30
mov bl, byte [ebp - 0x35]
lea ecx, [ebp - 0x33]
movzx eax, bl
push eax
mov eax, dword [ebp - 0x4c]
add eax, ecx
push 0
push eax
call fcn.00424dd0
mov eax, dword [ebp + 0x10]
add esp, 0x18
mov byte [ebp - 0x25], 1
test eax, eax
je 0x40bdf6
nop dword [eax + eax]
cmp eax, 0x10
mov ebx, eax
mov eax, 0x10
cmova ebx, eax
cmp dword [ebp + 0xc], 0
jne 0x40bc7e
push ebx
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
push esi
push eax
movups xmmword [ebp - 0x14], xmm0
call fcn.00424f30
add esp, 0xc
mov edx, 0x10
xor ecx, ecx
nop
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x40bc50
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.0040cba0
add esp, 0x14
test eax, eax
jne 0x40be7a
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x10
lea eax, [ebp - 0x34]
push eax
push dword [ebp - 0x44]
call fcn.0040cba0
add esp, 0x14
test eax, eax
jne 0x40be7a
xor dl, dl
test ebx, ebx
je 0x40bd53
cmp ebx, 0x40
jb 0x40bd53
mov al, bl
dec al
movzx ecx, al
lea eax, [ebp - 0x14]
add eax, ecx
cmp edi, eax
ja 0x40bcd4
lea eax, [ebp - 0x14]
mov dword [ebp - 0x4c], eax
lea eax, [ecx + edi]
cmp eax, dword [ebp - 0x4c]
jae 0x40bd53
lea eax, [ecx + esi]
cmp edi, eax
ja 0x40bce2
lea eax, [ecx + edi]
cmp eax, esi
jae 0x40bd53
mov eax, ebx
mov cl, 0x20
and eax, 0xffffffc0
mov dword [ebp - 0x4c], eax
xor eax, eax
nop
movups xmm0, xmmword [ebp + eax - 0x14]
add dl, 0x40
movups xmm1, xmmword [eax + esi]
pxor xmm1, xmm0
movups xmmword [eax + edi], xmm1
mov al, cl
sub al, 0x10
movzx eax, al
movups xmm0, xmmword [ebp + eax - 0x14]
movups xmm1, xmmword [eax + esi]
pxor xmm1, xmm0
movups xmmword [eax + edi], xmm1
movzx eax, cl
movups xmm0, xmmword [ebp + eax - 0x14]
movups xmm1, xmmword [eax + esi]
pxor xmm1, xmm0
movups xmmword [eax + edi], xmm1
mov al, cl
add cl, 0x40
add al, 0x10
movzx eax, al
movups xmm1, xmmword [eax + esi]
movups xmm0, xmmword [ebp + eax - 0x14]
pxor xmm1, xmm0
movups xmmword [eax + edi], xmm1
movzx eax, dl
cmp eax, dword [ebp - 0x4c]
jb 0x40bcf0
movzx eax, dl
cmp eax, ebx
jae 0x40bd73
nop word [eax + eax]
mov cl, byte [eax + esi]
inc dl
xor cl, byte [ebp + eax - 0x14]
mov byte [eax + edi], cl
movzx eax, dl
cmp eax, ebx
jb 0x40bd60
cmp dword [ebp + 0xc], 1
jne 0x40bdc3
push ebx
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
push edi
push eax
movups xmmword [ebp - 0x14], xmm0
call fcn.00424f30
add esp, 0xc
mov edx, 0x10
xor ecx, ecx
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x40bd95
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.0040cba0
add esp, 0x14
test eax, eax
jne 0x40be7a
mov eax, dword [ebp + 0x10]
add edi, ebx
sub eax, ebx
add esi, ebx
mov bl, byte [ebp - 0x35]
xor dl, dl
mov dword [ebp + 0x10], eax
test bl, bl
je 0x40bdee
movzx eax, dl
lea ecx, [ebp - 0x25]
sub ecx, eax
add byte [ecx], 1
jne 0x40bdeb
inc dl
cmp dl, bl
jb 0x40bdd8
mov eax, dword [ebp + 0x10]
test eax, eax
jne 0x40bc20
xor dl, dl
test bl, bl
je 0x40be1a
nop dword [eax]
movzx eax, dl
mov ecx, 0xf
sub ecx, eax
cmp ecx, 0x10
jae 0x40be8b
inc dl
mov byte [ebp + ecx - 0x34], 0
cmp dl, bl
jb 0x40be00
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x10
lea eax, [ebp - 0x34]
push eax
push dword [ebp - 0x44]
call fcn.0040cba0
add esp, 0x14
test eax, eax
jne 0x40be7a
xor ecx, ecx
mov edx, 0x10
nop
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x40be40
push dword [ebp + 0x30]
lea eax, [ebp - 0x24]
push eax
push dword [ebp - 0x58]
call fcn.00424f30
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00423606
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffff3
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00423606
mov esp, ebp
pop ebp
ret
call fcn.00423736
int3