Function at 0x405ad2
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
movzx eax, word [0x43e3ca]
and eax, 0x4252f4d0
mov word [0x43e3ca], ax
mov eax, dword [0x43b744]
mov ecx, dword [0x4379a8]
add eax, 0xfec172c0
imul ecx, eax
mov eax, 0x3a1d
push ebx
mov ebx, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 8]
mov dword [0x4379a8], ecx
mov word [0x43fb54], ax
cmp edi, ebx
jne 0x405b70
and dword [0x43beb8], 0xa6b4aad9
mov edx, edi
movsx ecx, word [0x43cda0]
movzx eax, word [0x43f3f4]
add ecx, ecx
mov ebx, dword [ebp + 0xc]
xor ecx, 0xd2455213
sub eax, ecx
mov dword [ebp + 0x10], ebx
mov word [0x43f3f4], ax
add dword [0x43b2f0], 0x209973ee
movsx ecx, word [0x440ad4]
mov eax, dword [0x434928]
not ecx
imul eax, ecx
imul eax, eax, 0x4f151f4
mov dword [0x434928], eax
jmp 0x405b73
mov edx, dword [ebp + 0xc]
mov eax, dword [0x43b1ec]
shl eax, 9
cmp eax, 0x9bc9170
je 0x405bbe
mov eax, dword [0x43712c]
and eax, 0x51131390
cmp eax, 0x40d9af89
jge 0x405bb4
inc word [0x43ff42]
mov ax, word [0x43ff42]
cwde
sub eax, dword [0x437fb0]
add eax, 0xc94ae83c
add dword [0x4360bc], eax
jmp 0x405bbe
xor dword [0x43b17c], 0x20eaf94e
cmp edi, edx
je 0x405bd5
push edx
push edi
call fcn.0041fa13
mov edx, eax
pop ecx
pop ecx
test edx, edx
jne 0x405e87
movsx eax, word [0x440d28]
mov ecx, dword [0x438a28]
add eax, 0xf3e09035
sar ecx, 1
and ecx, eax
add dword [0x434004], ecx
dec word [0x440d28]
push esi
mov esi, dword [ebx + 4]
dec esi
push 0
pop ebx
js 0x405c15
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 8]
lea eax, [eax + esi*4]
cmp dword [eax], ebx
jne 0x405c15
sub eax, 4
dec esi
jns 0x405c0b
mov eax, dword [0x434ac4]
mov ecx, 0xf87748d5
sub ecx, eax
lea eax, [esi + 1]
or dword [0x439dc4], ecx
push eax
push edi
mov dword [ebp - 4], eax
call fcn.004118c1
mov edx, eax
pop ecx
pop ecx
test edx, edx
jne 0x405e86
imul eax, dword [0x43630c], 0x3f704122
mov dword [0x43630c], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 8]
or dword [0x43ba20], 0x7c44fa6
mov dword [ebp + 0xc], eax
mov eax, dword [edi + 8]
or dword [0x433260], 0x396fccb9
mov dword [ebp + 0x10], eax
mov ax, word [0x43c9b0]
mov ecx, dword [0x433e40]
cwde
and ecx, eax
mov word [0x43c9b0], cx
test esi, esi
js 0x405e65
mov esi, dword [ebp + 0x10]
sub dword [ebp + 0xc], esi
mov edi, dword [ebp - 4]
mov ecx, dword [ebp + 0xc]
mov dword [ebp + 0x10], edi
or dword [0x4360e4], 0x18931555
add dword [esi], ebx
xor dword [0x437124], 0xee75cf04
cmp dword [esi], ebx
mov dword [0x43b5c8], 0xd07e98c7
mov eax, dword [ecx + esi]
sbb ebx, ebx
add dword [esi], eax
neg ebx
or dword [0x43b72c], 0x9fcd3e2e
mov eax, dword [esi]
cmp eax, dword [ecx + esi]
sbb eax, eax
add esi, 4
neg eax
add ebx, eax
movzx eax, word [0x43cd72]
xor eax, 0xd1824c3d
mov word [0x43cd72], ax
dec edi
jne 0x405c9f
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
jmp 0x405e5d
inc dword [0x4332ec]
mov eax, dword [0x4332ec]
cmp eax, 0xdcdd7df
je 0x405d1e
add dword [0x43b6bc], 0xf2a8d7ee
cmp ecx, dword [edi + 4]
jl 0x405de9
lea eax, [ecx + 1]
mov dword [0x435928], 0x22207069
push eax
push edi
call fcn.004118c1
mov edx, eax
pop ecx
pop ecx
test edx, edx
jne 0x405e86
mov eax, dword [0x435c3c]
add eax, 0xb1e407c0
cmp dword [0x43bf80], eax
je 0x405d7a
mov eax, dword [0x435210]
movzx ecx, word [0x43ceb2]
imul eax, eax, 0x1c269960
or ecx, eax
mov word [0x43ceb2], cx
dec dword [0x435210]
mov eax, dword [edi + 8]
mov ecx, dword [ebp + 0x10]
lea esi, [eax + ecx*4]
mov ecx, dword [0x437cf8]
mov eax, dword [0x4336b0]
sar ecx, 8
or eax, 0x14e3bd06
xor ecx, 0x2404004
or ecx, 0xf916bf1b
dec dword [0x4336b0]
cmp eax, ecx
je 0x405de9
movsx eax, word [0x43e46e]
sub eax, 0x2a7e77b2
xor eax, 0xf8896d80
inc word [0x43e46e]
cmp eax, 0x6fcf3fdd
jle 0x405ddf
movzx eax, word [0x43feaa]
and eax, 0x240dc2
mov word [0x43feaa], ax
jmp 0x405de9
xor dword [0x439ae8], 0x8c000090
mov dword [0x433628], 0xd2ace281
add dword [esi], ebx
mov eax, dword [0x4372a4]
imul eax, eax, 0x38ac51f0
and dword [0x438014], eax
cmp dword [esi], ebx
mov eax, dword [0x4377ac]
mov ecx, dword [0x435750]
sbb ebx, ebx
not eax
neg ebx
xor ecx, eax
mov eax, dword [0x4368b4]
xor eax, ecx
cmp eax, 0x802000e
jg 0x405e3b
movzx eax, word [0x43f712]
xor eax, 0xa0bbda39
mov word [0x43f712], ax
mov ecx, dword [ebp + 0x10]
mov eax, dword [0x439d04]
inc ecx
add eax, 0x6a2cf528
mov dword [ebp + 0x10], ecx
cmp eax, 0xc008415
jne 0x405e5d
and dword [0x438ec8], 0x3eab51e7
test ebx, ebx
jne 0x405d02
dec dword [0x43b144]
mov eax, dword [0x43b144]
and eax, 0x90223ea
cmp eax, 0x418100
jl 0x405e86
xor dword [0x4338f0], 0x6553149
pop esi
pop edi
mov eax, edx
pop ebx
mov esp, ebp
pop ebp
ret