Function at 0x422f90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
mov ecx, dword [ebp + 8]
xor eax, eax
cmp byte [ebp + 0x18], 0
setne al
lea eax, [eax*8 + 0x120]
lea edx, [esp + 0x2c]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.0043f6e0
xor ebx, ebx
test eax, eax
js 0x4234c4
mov dword [esp + 4], 0xeee710e6
mov byte [esp + 8], 0x6c
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
nop
nop
nop
nop
nop
nop
mov ecx, ebx
xor ecx, 0xf534c413
mov eax, ebx
or eax, 4
and eax, ecx
mov ecx, eax
and ecx, 5
mov edx, eax
and edx, 2
or eax, 2
imul eax, edx
xor edx, 2
imul edx, ecx
mov ecx, ebx
xor ecx, 0xacb3bec
add ecx, eax
movzx eax, byte [esp + ebx + 4]
add ecx, edx
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add cl, al
add cl, 0x64
mov byte [esp + ebx + 4], cl
inc ebx
cmp ebx, 8
jne 0x422ff0
cmp byte [esp + 0x4b], 0
js 0x42305d
lea eax, [esp + 0x34]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405dd0
add esp, 0xc
mov bl, 1
jmp 0x4230b0
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
mov eax, ebx
or eax, esi
je 0x4230ae
mov edi, dword [esp + 0x3c]
inc edi
push edi
call fcn.0040c8d0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.0043f6e0
test eax, eax
setns bl
js 0x4230a3
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405dd0
add esp, 0xc
push edi
call fcn.0040c8e0
add esp, 4
jmp 0x4230b0
xor ebx, ebx
movzx eax, byte [ebp + 0x18]
mov dword [esp + 0x1c], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp + 4], 0x72665c8e
mov dword [esp + 8], 0xff63
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
dec dl
xor dl, byte [esp + ecx + 4]
add dl, 5
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 8
jne 0x4230e0
mov dword [esp + 0x14], ebx
lea ecx, [esp + eax]
add ecx, 0x2c
cmp byte [esp + eax + 0x43], 0
js 0x42311b
lea eax, [esp + 4]
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405dd0
add esp, 0xc
mov bl, 1
jmp 0x42316a
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x423168
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040c8d0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.0043f6e0
test eax, eax
setns bl
js 0x42315d
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405dd0
add esp, 0xc
push edi
call fcn.0040c8e0
add esp, 4
jmp 0x42316a
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov ebx, eax
mov dword [esp + 4], 0x2b291a60
mov dword [esp + 8], 0x2a5f2257
mov byte [esp + 0xc], 0xb0
mov dword [esp + 0xd], 0
mov dword [esp + 0x10], 0
mov eax, 0x751eade
mov ecx, 0xae1521
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x751eada]
mov edi, ecx
and edi, 0xa81427
mov edx, eax
and edx, 0x600a818
or edx, edi
xor edx, esi
xor edx, 0xb9f956e7
mov esi, 2
sub esi, edx
add edx, 0xfd
and esi, 0x54
and edx, 0xab
sub edx, esi
inc dl
mov byte [esp + eax - 0x751eada], dl
inc eax
dec ecx
cmp eax, 0x751eaee
jne 0x4231b0
mov dword [esp + 0x14], ebx
cmp byte [esp + 0x63], 0
js 0x423220
lea eax, [esp + 0x4c]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405dd0
add esp, 0xc
mov bl, 1
jmp 0x423273
mov ebx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
mov eax, ebx
or eax, esi
je 0x423271
mov edi, dword [esp + 0x54]
inc edi
push edi
call fcn.0040c8d0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.0043f6e0
test eax, eax
setns bl
js 0x423266
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405dd0
add esp, 0xc
push edi
call fcn.0040c8e0
add esp, 4
jmp 0x423273
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov ebx, eax
mov dword [esp + 4], 0x293a2434
mov byte [esp + 8], 0x80
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
mov eax, 0xe9e692e1
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x16196d23]
xor ecx, eax
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
add cl, 0x9a
mov byte [esp + eax + 0x16196d23], cl
inc eax
cmp eax, 0xe9e692e9
jne 0x4232a0
cmp byte [esp + 0x7b], 0
js 0x4232ea
lea eax, [esp + 0x64]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405dd0
add esp, 0xc
mov esi, 1
jmp 0x423349
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x64]
mov esi, dword [esp + 0x68]
mov eax, ebx
or eax, esi
je 0x423343
mov edi, dword [esp + 0x6c]
inc edi
push edi
call fcn.0040c8d0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.0043f6e0
mov esi, eax
test eax, eax
js 0x423333
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405dd0
add esp, 0xc
push edi
call fcn.0040c8e0
add esp, 4
not esi
shr esi, 0x1f
jmp 0x423345
xor esi, esi
mov ebx, dword [esp + 0x14]
movzx ebx, bl
not ebx
or esi, ebx
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + eax*8 + 0x12c]
mov ecx, dword [esp + eax*8 + 0x130]
mov dword [esp + 4], 0xe6eaf39f
mov dword [esp + 8], 0xdcebe4ee
mov dword [esp + 0xc], 0x71d7e7f7
xor edx, edx
nop
nop
nop
nop
mov eax, edx
add al, 0xbf
xor al, byte [esp + edx + 4]
add al, 0x45
mov byte [esp + edx + 4], al
inc edx
cmp edx, 0xc
jne 0x423380
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], ecx
fild qword [esp + 0x20]
sub esp, 0x10
lea eax, [esp + 0x14]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405e20
add esp, 0x10
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x84]
mov dword [esp + 0x1c], eax
mov dword [esp + 4], 0xa8b5b6a1
mov dword [esp + 8], 0xadafbab9
mov word [esp + 0xc], 0xd1bd
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
mov ecx, 0x4f
mov edi, 0x31
nop
nop
nop
lea eax, [ecx - 1]
and eax, 0x17
xor eax, 0x37
mov edx, edi
or edx, 0xc8
add edx, ecx
or edx, eax
xor dl, byte [esp + ecx - 0x4b]
xor dl, 0x37
add dl, 0x7a
mov byte [esp + ecx - 0x4b], dl
inc ecx
dec edi
cmp ecx, 0x5f
jne 0x423400
cmp esi, ebx
setne byte [esp + 0x1b]
push dword [esp + 0x1c]
lea edi, [esp + 8]
push edi
push dword [ebp + 0x14]
call fcn.00405eb0
add esp, 0xc
or eax, dword [esp + 0x14]
sete bl
movzx eax, byte [esp + 0x85]
mov dword [esp + 4], 0xa3bebda8
mov dword [esp + 8], 0xbbb8ba8b
mov word [esp + 0xc], 0x29a1
mov dword [esp + 0xe], 0
and bl, byte [esp + 0x1b]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 4]
lea esi, [ecx + 0x156c524c]
and esi, edx
add edx, ecx
add edx, 0x156c524c
add esi, esi
sub edx, esi
add dl, 0x84
mov byte [esp + ecx + 4], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0xe
jb 0x423480
push eax
push edi
push dword [ebp + 0x14]
call fcn.00405eb0
add esp, 0xc
test eax, eax
sete al
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret