Function at 0x417c77
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x298
push ebx
push ebp
push esi
push edi
push 0x2e
pop eax
mov dword [esp + 0x20], edx
xor edx, edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x14], 0x58776821
mov byte [esp + 0x18], al
mov al, byte [esp + edx + 0x14]
xor al, 4
movzx eax, al
mov word [esp + edx*2 + 0x3c], ax
inc edx
cmp edx, 5
jl 0x417c9a
push dword [esp + 0x2ac]
xor eax, eax
mov ecx, 0x40ed
mov word [esp + 0x4a], ax
movzx eax, byte [0x42b9ce]
add ax, cx
mov word [0x42b9c4], ax
lea eax, [esp + 0x40]
push eax
call fcn.00422def
mov dx, word [0x42ba18]
mov edi, eax
pop ecx
pop ecx
mov eax, 0x2b37
mov dword [esp + 0x14], edi
mov cx, dx
sub cx, ax
movzx ebx, cx
mov word [0x42b9c4], cx
sub cl, 0x71
mov byte [0x42b9ce], cl
test edi, edi
je 0x4180b2
mov eax, 0x145c
mov ecx, 0xb894
or ax, dx
and bl, 0x9d
mov word [0x42b9f8], ax
mov ax, dx
or ax, cx
mov byte [0x42b9ce], bl
mov word [0x42b9c4], ax
xor ecx, ecx
and eax, 0xdf82
mov edx, 0x54e1cc7b
mov word [0x42ba18], ax
inc ecx
imul eax, eax, 0x5212
mov word [0x42ba14], ax
lea eax, [esp + 0x58]
push eax
push edi
call fcn.00415084
call eax
mov ecx, dword [0x42b9f4]
mov ebp, eax
and ecx, 0xd26
mov word [0x42b9c4], cx
mov cl, byte [0x42b9ce]
and cl, 0x3c
mov byte [0x42b9ce], cl
cmp ebp, 0xffffffff
je 0x418088
mov ax, word [0x42ba14]
mov edx, 0x5982
sub ax, dx
mov edx, 0x17299c7b
mov word [0x42b9cc], ax
movzx eax, cl
mov ecx, 0x3f27
or ax, cx
movzx ecx, word [0x42b9f8]
mov word [0x42ba18], ax
mov eax, 0xf458
imul ecx, eax
mov word [0x42b9f8], cx
xor ecx, ecx
inc ecx
call fcn.00415084
mov si, word [0x42b9cc]
mov ebx, 0xff
mov edi, dword [esp + 0x20]
mov dx, si
mov dword [esp + 0x30], eax
mov eax, 0xe989
and dx, ax
mov word [esp + 0x1c], 0x1515
mov word [0x42b9f8], dx
push 0x2e
pop eax
mov word [esp + 0x20], ax
xor eax, eax
mov word [esp + 0x22], ax
xor ecx, ecx
movzx eax, byte [esp + ecx + 0x1c]
add ax, 0x19
and ax, bx
mov word [esp + ecx*2 + 0x34], ax
inc ecx
cmp ecx, 2
jl 0x417e17
xor eax, eax
movzx ecx, dx
mov word [esp + 0x38], ax
mov eax, 0xff82
imul ecx, eax
mov eax, 0x8746
mov word [0x42b9c4], cx
movzx ecx, word [0x42ba14]
imul ecx, eax
mov eax, 0x4a93
add si, ax
mov eax, 0x648f
add ax, dx
mov word [0x42b9cc], si
mov word [0x42ba18], ax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x88]
mov word [0x42ba14], cx
push eax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x41801f
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x88]
push eax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x41801f
mov bx, word [0x42ba14]
mov al, bl
xor al, 0xcb
movzx edx, al
mov byte [0x42b9ce], al
mov eax, 0xe672
and dx, ax
test byte [esp + 0x58], 0x10
mov word [0x42b9cc], dx
je 0x417ff9
mov dword [esp + 0x24], 0x9bb2ab64
xor ecx, ecx
mov word [esp + 0x28], 0xab64
mov esi, 0xff
mov byte [esp + 0x2a], 0xb2
movzx eax, byte [esp + ecx + 0x24]
sub ax, 0x3f
and ax, si
mov word [esp + ecx*2 + 0x48], ax
inc ecx
cmp ecx, 7
jl 0x417efa
xor eax, eax
and dl, 0xfd
mov word [esp + 0x56], ax
mov eax, dword [0x42b9f4]
add eax, 0xfffff23d
mov byte [0x42b9ce], dl
mov word [0x42b9f8], ax
mov eax, 0x4805
or bx, ax
movzx eax, bx
xor eax, 0x1f16
mov word [0x42ba14], bx
mov word [0x42ba18], ax
lea eax, [esp + 0x84]
push eax
push dword [esp + 0x2b0]
lea eax, [esp + 0x50]
push eax
call fcn.00422def
mov dl, byte [0x42b9cc]
mov esi, eax
mov cx, word [0x42ba18]
mov eax, 0x26ab
and dl, 0xcc
and cx, ax
add esp, 0xc
mov byte [0x42b9ce], dl
mov word [0x42b9cc], cx
test esi, esi
je 0x417ff9
mov eax, dword [0x42b9f4]
mov ecx, 0x3b35
add eax, 0x2816
mov word [0x42ba14], ax
movzx eax, dl
mov edx, edi
xor ax, cx
mov ecx, 0x468
mov word [0x42ba18], ax
mov ax, word [0x42b9f8]
and ax, cx
mov ecx, dword [esp + 0x2c]
mov word [0x42b9c4], ax
lea eax, [esp + 0x84]
push eax
push esi
call fcn.004180bd
mov eax, 0xac5d
xor ax, word [0x42b9c4]
push esi
mov word [0x42b9f8], ax
call fcn.004056f0
add esp, 0xc
mov ebx, 0xff
lea eax, [esp + 0x58]
push eax
push ebp
call dword [esp + 0x38]
test eax, eax
je 0x41803e
mov dx, word [0x42b9f8]
mov si, word [0x42b9cc]
jmp 0x417e06
movzx eax, word [0x42b9c4]
add eax, 0x2f3645fc
mov dword [0x42b9f4], eax
mov eax, 0xca81
add word [0x42ba18], ax
jmp 0x417ffe
movzx edx, word [0x42b9f8]
mov eax, 0x12f6
mov bl, byte [0x42b9ce]
xor ecx, ecx
imul edx, eax
add bl, 4
movzx eax, bl
inc ecx
push ebp
mov byte [0x42b9ce], bl
mov word [0x42b9f8], dx
mov edx, 0x4bc4
and ax, dx
mov edx, 0x83fbc401
mov word [0x42ba14], ax
call fcn.00415084
call eax
mov edi, dword [esp + 0x14]
mov cx, word [0x42b9f8]
movzx eax, cx
or eax, 0xef76e4dd
mov dword [0x42b9f4], eax
mov eax, 0x5233
sub cx, ax
push edi
mov word [0x42b9c4], cx
call fcn.004056f0
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x298
ret