Function at 0x4122e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x38
mov edi, dword [esp + 0x4c]
mov dword [esp], ecx
mov eax, dword [0x447834]
mov edx, edi
mov ecx, edi
mov esi, edi
xor eax, esp
not edx
and ecx, 0xf
xor esi, 0x6604801e
mov dword [esp + 0x34], eax
mov eax, edx
and esi, edi
mov dword [esp + 0x10], 0x7fffffff
and eax, 0xfffffff0
mov ebx, esi
and esi, 0x6cb981a2
or ecx, eax
not ebx
mov eax, ecx
xor eax, edx
and edx, 0xb1c894cc
and eax, ecx
mov ecx, edi
and ecx, 0x4e376b33
or ecx, edx
mov edx, ecx
xor ecx, 0x2000800c
or ecx, 0x99fb7fe1
xor edx, 0x44000002
mov edi, ecx
or ecx, ebx
and ebx, 0x93467e5d
and edx, 0x64008002
and edi, 0x93467e5d
or esi, ebx
not ecx
or edx, edi
xor esi, edx
or ecx, esi
mov edx, ecx
and ecx, 0x99fb7fee
not edx
and edx, 0x66048011
or ecx, edx
mov edx, eax
mov ebp, ecx
not edx
not ebp
and ecx, edx
or edx, ebp
and ebp, eax
not edx
or ebp, ecx
mov eax, edx
and eax, ebp
xor ebp, edx
or ebp, eax
mov eax, 0xbfd7b23d
cmp eax, 0xbfd7b23c
jg 0x412670
cmp eax, 0x91cd1d52
je 0x4124d7
cmp eax, 0xa4b6af1b
je 0x4126de
cmp eax, 0xbf816149
jne 0x4123a0
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov ecx, dword [edi]
mov edx, dword [esp + 0x1c]
inc eax
mov edx, 0xc6da1ab6
mov dword [esp + 0x2c], eax
cmp edx, 0x900172a3
je 0x41241b
cmp edx, 0xb4fb5a6a
je 0x4126ac
cmp edx, 0xc6da1ab6
jne 0x4123e0
mov edx, dword [esp + 0x2c]
mov esi, 0x900172a3
cmp edx, 0xfff
mov edx, 0xb4fb5a6a
cmova edx, esi
cmp edx, 0x900172a3
jne 0x4123e8
mov edx, dword [ecx - 4]
add eax, 0x23
mov dword [esp + 0x30], edx
sub ecx, dword [esp + 0x30]
cmp ecx, 3
seta byte [esp + 0x24]
cmp ecx, 0x24
mov ecx, 0xac1f43e6
setb byte [esp + 0x28]
cmp ecx, 0xac1f43e6
jne 0x4124a8
movzx ecx, byte [esp + 0x24]
movzx edx, byte [esp + 0x28]
mov esi, 0xd8f649f6
mov ch, dl
xor ch, 1
and dl, ch
mov dh, ch
and dh, dl
xor dl, ch
mov ch, cl
xor ch, 1
or dl, dh
mov dh, ch
or dh, dl
xor dl, 1
or dl, cl
mov ebx, edx
or dl, dh
xor bl, dh
xor dl, 1
or dl, bl
mov dh, dl
and dl, cl
xor dh, 1
and ch, dh
or dl, ch
mov ecx, 0x73576479
xor dh, dl
test dl, 1
cmovne ecx, esi
test dh, 1
mov esi, 0x73576479
cmove ecx, esi
cmp ecx, 0xac1f43e6
je 0x412446
cmp ecx, 0xd8f649f6
je 0x4124bd
cmp ecx, 0x73576479
jne 0x41243e
jmp 0x4126fa
mov ecx, dword [esp + 0x30]
mov edx, 0xb4fb5a6a
cmp edx, 0x900172a3
jne 0x4123e8
jmp 0x41241b
mov ecx, dword [esp]
mov edi, 0xb7745f77
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 4], eax
mov eax, dword [eax + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 0x14]
lea ecx, [esp + 0x24]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x2c], ebp
mov ecx, dword [esp + 0x2c]
mov edx, eax
shr edx, 1
mov dword [esp + 0x24], ecx
cmp edi, 0xdc1be86c
jg 0x4125a0
jmp 0x412538
mov edi, 0xbf0ef74d
mov ebx, 0x7fffffff
nop dword [eax]
cmp edi, 0xdc1be86c
jg 0x4125a0
cmp edi, 0x95c54b0d
je 0x412571
cmp edi, 0xb7745f77
je 0x412555
cmp edi, 0xbf0ef74d
jne 0x412530
jmp 0x4125e3
cmp dword [esp + 0x2c], 0
mov edi, 0x95c54b0d
mov esi, 0xdc1be86d
cmovs edi, esi
cmp edi, 0xdc1be86c
jle 0x412538
jmp 0x4125a0
mov dword [esp + 0x30], edx
mov edi, 0x7fffffff
mov esi, 0x18dd9667
sub edi, dword [esp + 0x30]
cmp edi, eax
mov edi, 0xb743c06
cmovb edi, esi
cmp edi, 0xdc1be86c
jle 0x412538
nop word cs:[eax + eax]
nop
cmp edi, 0xdc1be86d
je 0x41251f
cmp edi, 0xb743c06
je 0x4125c5
cmp edi, 0x18dd9667
jne 0x412530
jmp 0x41251f
mov ebx, dword [esp + 0x30]
mov edi, 0xbf0ef74d
add ebx, eax
cmp ecx, ebx
cmovae ebx, ecx
cmp edi, 0xdc1be86c
jle 0x412538
jmp 0x4125a0
mov eax, dword [esp + 0x28]
mov eax, dword [esp]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
lea eax, [ebx + 1]
push eax
call fcn.00408310
add esp, 4
mov dword [esp + 0xc], eax
mov edi, eax
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov dword [esp + 8], ebp
mov dword [eax + 0x10], esi
mov eax, dword [esp + 4]
mov dword [eax + 0x14], ebx
mov al, byte [esp + 0x54]
movzx eax, al
push esi
push eax
push edi
call fcn.0041d450
add esp, 0xc
mov byte [edi + esi], 0
mov ebp, dword [esp + 8]
mov ecx, 0xbf816149
mov eax, dword [esp + 0x18]
cmp eax, 0xf
mov eax, 0xec89ff94
cmova eax, ecx
cmp eax, 0xbfd7b23c
jle 0x4123ab
nop word cs:[eax + eax]
nop dword [eax]
cmp eax, 0xbfd7b23d
je 0x41268a
cmp eax, 0xec89ff94
jne 0x4126ce
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
mov dword [eax], ecx
jmp 0x4126bc
mov eax, dword [esp + 0x10]
mov ecx, 0xf667572c
cmp eax, dword [esp + 0x4c]
mov eax, 0x91cd1d52
cmovb eax, ecx
cmp eax, 0xbfd7b23c
jle 0x4123ab
jmp 0x412670
push eax
push ecx
call fcn.0041788e
add esp, 8
mov eax, dword [esp + 0xc]
mov dword [edi], eax
mov eax, 0xa4b6af1b
cmp eax, 0xbfd7b23c
jle 0x4123ab
jmp 0x412670
cmp eax, 0xf667572c
jne 0x4123a0
call fcn.00408300
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
xor ecx, esp
call fcn.004178c4
mov eax, dword [esp]
add esp, 0x38
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
call fcn.00423509
int3