Function at 0x418490
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebx, dword [esp + 0x38]
mov ebp, 0xfffffffe
cmp word [ebx + ebp + 2], 0
lea ebp, [ebp + 2]
jne 0x4184a0
mov eax, dword [esp + 0x34]
mov esi, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x4184c0
sar ebp, 1
sar eax, 1
lea ecx, [eax + ebp]
add ecx, 2
test ecx, ecx
jns 0x4184e0
mov eax, 0xffffffff
jmp 0x4184e9
add eax, ebp
lea eax, [eax*2 + 4]
push eax
call fcn.00408380
add esp, 4
movzx ecx, word [esi]
mov edi, eax
test cx, cx
je 0x418521
add esi, 2
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x418510
mov word [edi], 0x5c
add edi, 2
movzx ecx, word [ebx]
test cx, cx
je 0x418551
lea edx, [ebx + 2]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x418540
mov word [edi], 0
lea ebx, [esp + 0x18]
push 0x60
push 3
push 0x120089
push ebx
mov dword [esp + 0x20], eax
push eax
call fcn.0043ff30
add esp, 0x14
mov edi, eax
mov dword [esp], 0x5f9e99df
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax]
lea edx, [eax - 0x16775666]
xor edx, ecx
mov ecx, edx
and ecx, 0x7d
add ecx, ecx
xor edx, 2
sub ecx, edx
mov byte [esp + eax], cl
mov ecx, eax
xor ecx, 0xfffffffe
or eax, 1
and ecx, eax
add eax, ecx
cmp eax, 7
jb case.default.0x4185c4
xor eax, eax
cmp edi, dword [esp]
sete al
jmp dword [eax*4 + 0x44659c]
mov dword [esp + 8], 0xb77609b4
mov word [esp + 0xc], 0
mov byte [esp + 0xe], 0
mov eax, 0xbe
mov ecx, 0x41
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0xb6]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0x4a
mov byte [esp + eax - 0xb6], dl
inc eax
dec ecx
cmp eax, 0xc5
jne case.default.0x41861c
xor eax, eax
cmp edi, dword [esp + 8]
sete al
jmp dword [eax*4 + 0x4465a4]
push 0
push 0x1388
push dword [esp + 0x18]
call fcn.00439040
add esp, 0xc
movzx eax, al
jmp dword [eax*4 + 0x4465ac]
not edi
shr edi, 0x1f
jmp dword [edi*4 + 0x4465b4]
xor ebx, ebx
jmp dword [0x4465ec]
push dword [esp + 0x10]
call fcn.00408390
add esp, 4
mov eax, ebx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x60
push 3
push 0x120089
push ebx
push dword [esp + 0x20]
call fcn.0043ff30
add esp, 0x14
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x4465b4]
lea eax, [esp + 8]
push 0
push eax
push dword [esp + 0x20]
call fcn.00440280
add esp, 0xc
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x4465bc]
mov esi, dword [esp + 8]
push esi
call fcn.00408380
add esp, 4
push 0
push esi
mov dword [esp + 0x1c], eax
push eax
push dword [esp + 0x24]
call fcn.00440350
add esp, 0x10
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x4465c4]
jmp dword [0x4465d0]
push edi
call fcn.00408390
add esp, 4
jmp dword [0x4465e4]
mov eax, dword [esp + 0x34]
mov edi, dword [eax]
mov esi, dword [eax + 8]
push 0
call fcn.00408380
add esp, 4
movzx edx, word [edi]
mov ecx, eax
test dx, dx
mov ebx, dword [esp + 0x38]
je 0x418731
add edi, 2
mov ecx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ecx], dx
add ecx, 2
movzx edx, word [edi]
add edi, 2
test dx, dx
jne 0x418720
mov word [ecx], 0x2f
add ecx, 2
movzx edx, word [esi]
test dx, dx
je 0x418761
add esi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ecx], dx
add ecx, 2
movzx edx, word [esi]
add esi, 2
test dx, dx
jne 0x418750
mov word [ecx], 0x2f
add ecx, 2
movzx edx, word [ebx]
test dx, dx
je 0x418791
lea esi, [ebx + 2]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ecx], dx
add ecx, 2
movzx edx, word [esi]
add esi, 2
test dx, dx
jne 0x418780
mov word [ecx], 0
mov ecx, dword [esp + 0x30]
push dword [esp + 8]
push dword [esp + 0x18]
push eax
call fcn.004090c0
mov eax, dword [esp + 0x34]
mov esi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x4187c0
mov ecx, dword [esp + 0x34]
mov ebx, dword [ecx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x4187e0
sar eax, 1
sar ecx, 1
add eax, ebp
lea edx, [eax + ecx]
add ecx, eax
add ecx, 3
lea eax, [edx*2 + 6]
test ecx, ecx
jns 0x418809
mov eax, 0xffffffff
push eax
call fcn.00408380
add esp, 4
mov edi, eax
movzx ecx, word [esi]
test cx, cx
je 0x418841
add esi, 2
mov eax, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x418830
mov word [eax], 0x2f
add eax, 2
movzx ecx, word [ebx]
test cx, cx
je 0x418871
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x418860
mov word [eax], 0x2f
add eax, 2
mov edx, dword [esp + 0x38]
movzx ecx, word [edx]
test cx, cx
je 0x4188a1
add edx, 2
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x418890
mov word [eax], 0
mov ecx, dword [esp + 0x30]
push dword [esp + 8]
push dword [esp + 0x18]
push edi
call fcn.004090c0
jmp dword [0x4465d8]
mov ebx, eax
jmp dword [0x4465dc]
jmp dword [0x4465e4]
push dword [esp + 0x14]
call fcn.00408390
add esp, 4
mov eax, dword [esp + 0x18]
mov dword [esp], 0x34353637
mov byte [esp + 4], 0
mov esi, 0x4c
mov edx, 0x33
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
and edi, 0x2c
mov ecx, esi
and ecx, 0x53
or ecx, edi
xor cl, byte [esp + esi - 0x4c]
xor cl, 0xac
add cl, 4
mov byte [esp + esi - 0x4c], cl
inc esi
dec edx
cmp esi, 0x51
jne 0x418900
mov ecx, dword [0x44d2b8]
test ecx, ecx
je 0x418958
mov edx, dword [esp]
xor esi, esi
mov edi, dword [0x44d2bc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0x1b6183f2
je 0x418950
inc esi
cmp ecx, esi
jne 0x418940
jmp 0x418958
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, edx
jne 0x41895e
jmp dword [0x4465ec]
push eax
push 4
push ecx
push dword [0x44d2c0]
call fcn.0043d920
add esp, 0x10
jmp dword [0x4465ec]