Function at 0x421d60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x148
cmp byte [ebp + 0x18], 0
je 0x421e39
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040c700
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043e510
test eax, eax
js 0x421e39
mov dword [esp], 0xaea7b0a6
mov byte [esp + 4], 0xec
mov dword [esp + 5], 0
mov word [esp + 9], 0
mov edx, 0x50d8fafc
movzx eax, byte [esp + edx - 0x50d8fafc]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xfd
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0x14
mov byte [esp + edx - 0x50d8fafc], al
inc edx
cmp edx, 0x50d8fb07
jne 0x421dd0
cmp byte [esp + 0x3f], 0
js 0x421e40
lea eax, [esp + 0x28]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b20
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x421e9b
xor eax, eax
jmp 0x4222c7
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x421e93
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040c560
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.0043e510
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x421e88
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405b20
add esp, 0xc
push edi
call fcn.0040c570
add esp, 4
jmp 0x421e9b
mov dword [esp + 0x10], 0
mov dword [esp], 0x52667c4e
mov dword [esp + 4], 0xdf63
mov byte [esp + 8], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx]
mov edx, ecx
xor edx, 0xbb980122
mov edi, eax
and edi, 4
add edx, edi
add edx, 0x5260718d
xor edx, esi
lea edi, [edx - 0x45da3d6c]
mov ebx, edi
xor ebx, 0xfe
mov esi, edi
or esi, 1
and esi, ebx
mov ebx, edi
xor edi, 1
add edx, edi
add edx, 0xba25c294
and ebx, 0xfe
sub edx, ebx
add edx, esi
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 9
jne 0x421ec0
cmp byte [esp + 0x11f], 0
js 0x421f37
lea eax, [esp + 0x108]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b20
add esp, 0xc
mov bl, 1
jmp 0x421f91
mov ebx, dword [esp + 0x108]
mov esi, dword [esp + 0x10c]
mov eax, ebx
or eax, esi
je 0x421f8f
mov edi, dword [esp + 0x110]
inc edi
push edi
call fcn.0040c560
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.0043e510
test eax, eax
setns bl
js 0x421f84
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405b20
add esp, 0xc
push edi
call fcn.0040c570
add esp, 4
jmp 0x421f91
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0x1d1f1a0c
mov dword [esp + 4], 0x12050209
mov byte [esp + 8], 0x6c
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
mov eax, 0x655b8567
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x655b8567]
xor edx, eax
lea ecx, [edx + 0x53664fc]
mov esi, ecx
xor esi, 0xfe
or ecx, 1
and ecx, esi
mov esi, 3
sub esi, edx
or esi, 1
sub ecx, esi
mov byte [esp + eax - 0x655b8567], cl
inc eax
cmp eax, 0x655b8575
jne 0x421fd0
cmp byte [esp + 0x57], 0
js 0x422026
lea eax, [esp + 0x40]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b20
add esp, 0xc
mov bl, 1
jmp 0x422077
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov eax, ebx
or eax, esi
je 0x422075
mov edi, dword [esp + 0x48]
inc edi
push edi
call fcn.0040c560
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.0043e510
test eax, eax
setns bl
js 0x42206a
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405b20
add esp, 0xc
push edi
call fcn.0040c570
add esp, 4
jmp 0x422077
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0x11e614ec
mov byte [esp + 4], pe_nt_image_headers32
mov dword [esp + 5], 0
mov dword [esp + 8], 0
xor eax, eax
nop
mov ecx, eax
add cl, 0x6b
xor cl, byte [esp + eax]
add cl, 0xe9
mov byte [esp + eax], cl
inc eax
cmp eax, 0xc
jne 0x4220a0
cmp byte [esp + 0x6f], 0
js 0x4220d6
lea eax, [esp + 0x58]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b20
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x422131
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov eax, ebx
or eax, esi
je 0x422129
mov edi, dword [esp + 0x60]
inc edi
push edi
call fcn.0040c560
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.0043e510
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x42211e
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405b20
add esp, 0xc
push edi
call fcn.0040c570
add esp, 4
jmp 0x422131
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x124]
mov dword [esp], 0x8e869185
mov dword [esp + 4], 0xf09d889a
mov dword [esp + 8], 0xf919d9d
mov edx, 6
mov edi, 0x30767139
mov ebx, edi
xor ebx, 0xe
mov esi, edi
or esi, 0x31
and esi, ebx
mov ebx, edx
and ebx, 0xe
or ebx, esi
xor bl, byte [esp + edx - 6]
xor bl, 0xf1
add bl, 0x22
mov byte [esp + edx - 6], bl
inc edx
dec edi
cmp edx, 0x12
jne 0x422160
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea eax, [esp + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405b70
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp], 0x6c076a1f
mov dword [esp + 4], 0xf6d1e1f
mov word [esp + 8], 0xff03
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
mov ecx, dword [esp + 0x10]
and cl, byte [esp + 0x14]
mov dword [esp + 0x10], ecx
mov ecx, 0xdf1ac929
mov edx, 0xd6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x20e536d7]
mov ebx, edx
xor ebx, ecx
and ebx, edi
xor ebx, ecx
mov edi, 1
sub edi, ebx
not edi
and edi, 1
or ebx, 1
add ebx, edi
add bl, 0x32
mov byte [esp + ecx + 0x20e536d7], bl
inc ecx
dec edx
cmp ecx, 0xdf1ac938
jne 0x422200
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405c00
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp + 0x14], eax
mov dword [esp], 0xa7aab5a0
mov dword [esp + 4], 0xa7a0a6b7
mov dword [esp + 8], 0x51a9
or edi, esi
mov ecx, 0x3959928e
nop
movzx edx, byte [esp + ecx - 0x3959928e]
mov esi, edx
xor esi, ecx
lea ebx, [esi + esi]
not ebx
add ebx, esi
lea eax, [ecx - 0x39599280]
and eax, ebx
add al, al
sub dl, al
movzx eax, dl
add eax, ecx
add al, 0x3a
mov byte [esp + ecx - 0x3959928e], al
inc ecx
cmp ecx, 0x3959929a
jne 0x422270
push dword [esp + 0x14]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405c00
add esp, 0xc
or edi, eax
sete al
mov ecx, dword [esp + 0x10]
and cl, al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret