Function at 0x41c190
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa08
mov dword [esp + 0x1e0], 0x91419f43
mov dword [esp + 0x1e4], 0x95069307
mov dword [esp + 0x1e8], 0x890a970f
mov dword [esp + 0x1ec], 0x8d1e8b13
mov dword [esp + 0x1f0], 0x81518f07
mov dword [esp + 0x1f4], 0x85158315
mov dword [esp + 0x1f8], 0x79598726
mov dword [esp + 0x1fc], 0x7df17bec
mov dword [esp + 0x200], 0x71d97fec
mov dword [esp + 0x204], 0x75ec73bf
mov dword [esp + 0x208], 0x69e277d3
mov dword [esp + 0x20c], 0x6dfb6be1
mov dword [esp + 0x210], 0x61f36ffe
mov dword [esp + 0x214], 0x65fd63be
mov dword [esp + 0x218], 0x59fc67f5
mov dword [esp + 0x21c], 0x5dc55bc9
mov dword [esp + 0x220], 0x51e05f82
mov dword [esp + 0x224], 0x55c653f7
mov dword [esp + 0x228], 0x49c757dd
mov dword [esp + 0x22c], 0x4dd74bda
mov dword [esp + 0x230], 0x41e94ff9
mov dword [esp + 0x234], 0x45d443d2
mov dword [esp + 0x238], 0x39e347df
mov dword [esp + 0x23c], 0x3d3a3b9f
mov byte [esp + 0x240], 0
lea esi, [esp + 0x240]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x1e0]
lea ebx, [edi*2 + 1]
mov edx, edi
not edx
lea eax, [edx + edi*2]
inc eax
sub edi, ebx
lea eax, [edi + eax*2]
inc eax
lea edi, [ecx + 0xe5]
and eax, edi
mov ebx, 0x1a
sub ebx, ecx
and ebx, edx
or ebx, eax
mov al, 0x86
sub al, bl
mov byte [esp + ecx + 0x1e0], al
lea eax, [ecx + ecx]
and eax, 2
mov edx, eax
and edx, ecx
xor eax, ecx
xor eax, 1
lea ecx, [eax + edx*2]
cmp ecx, 0x61
jb 0x41c2c0
lea edi, [esp + 0x60]
lea eax, [esp + 0x1e0]
mov ecx, 0x18
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0xc0]
xor edx, edx
xor ecx, ecx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov dword [esp + 0x2c], 0
mov ecx, dword [0x448e64]
mov eax, 0x54554ad5
test ecx, ecx
je 0x41c398
mov edi, dword [0x448e68]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x9abdb589
je 0x41c370
inc edx
cmp ecx, edx
jne 0x41c360
jmp 0x41c398
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, 0x54554ad5
je 0x41c398
lea eax, [esp + 0x2c]
push eax
push 0
push 0
push 5
push 4
push ecx
push dword [0x448e6c]
call fcn.0043a3b0
add esp, 0x1c
mov dword [esp + 0x1e0], 0xf93a3b30
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x1e0]
mov edi, 4
sub edi, ecx
mov esi, 0xf4
sub esi, ecx
or esi, edi
mov ebx, edx
not ebx
or ebx, esi
mov edi, ebx
not edi
mov esi, ebx
and esi, 2
or ebx, 0xf2
inc ebx
imul ebx, esi
mov esi, edi
and esi, 2
or edi, 2
imul edi, esi
sub ebx, edi
add ebx, ecx
add bl, dl
add bl, 0xd4
mov byte [esp + ecx + 0x1e0], bl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 4
jb 0x41c3b0
cmp eax, dword [esp + 0x1e0]
jne 0x41c460
push dword [esp + 0x2c]
call fcn.00436f00
add esp, 4
mov dword [esp + 0x20], eax
mov ecx, dword [0x448e64]
test ecx, ecx
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 8]
je 0x41c49c
mov eax, dword [esp + 0x2c]
xor edx, edx
mov edi, dword [0x448e68]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x9abdb589
je 0x41c46e
inc edx
cmp ecx, edx
jne 0x41c450
jmp 0x41c49c
xor ecx, ecx
xor edx, edx
xor esi, esi
mov ebx, dword [ebp + 0x14]
jmp 0x41c9fc
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, 0x54554ad5
je 0x41c49c
push 0
push eax
push dword [esp + 0x28]
push 5
push 4
push ecx
push dword [0x448e6c]
call fcn.0043a3b0
add esp, 0x1c
test eax, eax
js 0x41c9cc
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx]
mov dword [esp + 0x14], 0
mov edi, ecx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
jmp 0x41c4ce
mov edi, dword [esp + 4]
mov eax, dword [edi]
test eax, eax
je 0x41c9e4
mov ebx, edi
mov ecx, dword [edi + eax + 0x3c]
add eax, edi
mov dword [esp + 4], eax
xor eax, eax
nop
nop
nop
nop
movzx edx, word [ecx + eax]
movzx edi, word [esi + eax]
test dx, dx
je 0x41c4f5
add eax, 2
cmp dx, di
je 0x41c4e0
cmp dx, di
mov ebx, dword [ebp + 0x14]
jne 0x41c4c0
mov edi, dword [esp + 4]
mov eax, dword [edi + 0x44]
mov dword [ebx + 8], eax
mov eax, dword [edi + 0xdc]
mov dword [ebx + 0xc], eax
mov ecx, ebx
push 0x410
call fcn.00437230
test eax, eax
js 0x41c4c4
mov dword [esp + 0x28], 0
mov edx, dword [0x448e64]
mov eax, 0x54554ad5
test edx, edx
je 0x41c5a0
mov ebx, dword [ebx]
xor edi, edi
mov ecx, dword [0x448e68]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ecx + edi*8], 0xae6e2b0b
je 0x41c56a
mov esi, edi
xor esi, 1
and edi, 1
lea edi, [esi + edi*2]
cmp edi, edx
jb 0x41c550
jmp 0x41c5a0
mov ecx, dword [ecx + edi*8 + 4]
cmp ecx, 0x54554ad5
je 0x41c5a0
lea eax, [esp + 0x28]
push eax
push 0
push 0
push 0x2b
push ebx
push 5
push ecx
push dword [0x448e6c]
call fcn.0043a3b0
add esp, 0x20
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x1e0], 0x718e8f88
mov word [esp + 0x1e4], 0
mov ecx, 0xe66d3faa
mov edx, 0x4cda7faa
nop
movzx esi, byte [esp + edx - 0x4cda7dca]
lea ebx, [ecx + 0x1992c100]
lea edi, [ecx + 0x666d4000]
and edi, ebx
xor edi, ecx
not edi
and edi, esi
xor edi, ecx
mov esi, edi
xor esi, 0x8cb8876d
add edi, edi
and edi, 0x8500eda
xor edi, 0x19710eda
sub edi, esi
mov esi, edi
and esi, 1
xor edi, 1
lea ebx, [edi + esi*2]
mov byte [esp + edx - 0x4cda7dca], bl
dec ecx
inc edx
cmp ecx, 0xe66d3fa4
jne 0x41c5c0
cmp eax, dword [esp + 0x1e0]
jne 0x41c670
mov eax, dword [esp + 0x28]
add eax, 2
push eax
call fcn.00436f00
add esp, 4
mov dword [esp + 0x24], eax
mov edx, dword [0x448e64]
test edx, edx
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 8]
je 0x41c6b0
mov ecx, dword [esp + 0x28]
mov eax, dword [ebx]
mov dword [esp + 0x10], eax
add ecx, 2
xor edi, edi
mov eax, dword [0x448e68]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [eax + edi*8], 0xae6e2b0b
je 0x41c67f
inc edi
cmp edx, edi
jne 0x41c660
jmp 0x41c6b0
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 8]
mov edi, dword [esp + 4]
jmp 0x41c81f
mov eax, dword [eax + edi*8 + 4]
cmp eax, 0x54554ad5
je 0x41c6b0
push 0
push ecx
push dword [esp + 0x2c]
push 0x2b
push dword [esp + 0x20]
push 5
push eax
push dword [0x448e6c]
call fcn.0043a3b0
add esp, 0x20
test eax, eax
js 0x41c80f
mov ecx, dword [esp + 0x24]
movzx eax, word [ecx]
shr eax, 1
mov ecx, dword [ecx + 4]
xor edx, edx
nop
nop
cmp eax, edx
je 0x41c6db
mov esi, dword [ebp + 0xc]
movzx edi, word [esi + edx*2]
cmp di, word [ecx + edx*2]
jne 0x41c80c
inc edx
test di, di
jne 0x41c6c0
mov ecx, ebx
call fcn.00437940
cmp eax, 2
mov esi, dword [ebp + 8]
mov edi, dword [esp + 4]
jne 0x41c813
mov ecx, ebx
push 0
push 0x30
lea eax, [esp + 0x38]
push eax
push 0
call fcn.00437720
test eax, eax
js 0x41c813
mov ecx, ebx
push 0
push 0
push 0x28
lea eax, [esp + 0x684]
push eax
push dword [esp + 0x4c]
push dword [esp + 0x4c]
call fcn.00437ce0
test eax, eax
js 0x41c813
mov ecx, ebx
push 0
push 0
push 0x80
lea eax, [esp + 0x1ec]
push eax
push dword [esp + 0x6ac]
push dword [esp + 0x6ac]
call fcn.00437ce0
test eax, eax
js 0x41c813
movzx eax, word [esp + 0x252]
push eax
call fcn.00436f00
add esp, 4
movzx edx, word [esp + 0x252]
mov ecx, ebx
push 0
push 0
push edx
mov dword [esp + 0x14], eax
push eax
push dword [esp + 0x26c]
push dword [esp + 0x26c]
call fcn.00437ce0
test eax, eax
js 0x41c9ba
movzx edi, word [esp + 0x60]
mov eax, dword [esp + 8]
mov dword [esp + 0xc], eax
test di, di
je 0x41c840
lea edx, [esp + 0x60]
mov eax, dword [esp + 8]
mov ecx, eax
mov dword [esp + 0xc], eax
jmp 0x41c7d8
movzx edi, word [edx]
test di, di
je 0x41c840
movzx eax, word [ecx]
test ax, ax
je 0x41c9b6
add ecx, 2
add edx, 2
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0xc]
add edx, 2
cmp ax, di
je 0x41c800
mov dword [esp + 0xc], edx
mov ecx, edx
mov edx, dword [esp + 0x10]
je 0x41c7d0
lea edx, [esp + 0x60]
jmp 0x41c7d0
mov esi, dword [ebp + 8]
mov edi, dword [esp + 4]
push dword [esp + 0x24]
call fcn.00436f60
add esp, 4
mov eax, dword [esp + 0x1c]
or eax, dword [esp + 0x18]
je 0x41c834
cmp dword [esp + 0x14], 0
jne 0x41c9e4
mov ecx, ebx
call fcn.004373b0
jmp 0x41c4c4
cmp dword [esp + 0xc], 0
mov edi, dword [esp + 4]
je 0x41c9ba
mov ecx, ebx
push 0
push 0
push 0x20
lea eax, [esp + 0x62c]
push eax
push dword [esp + 0x6a4]
push dword [esp + 0x6a4]
call fcn.00437ce0
test eax, eax
js 0x41c9ba
mov eax, dword [esp + 0x690]
mov ecx, dword [esp + 0x694]
add eax, 0x10
mov dword [esp + 0x10], eax
adc ecx, 0
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x630]
mov edx, dword [esp + 0x634]
mov dword [esp + 0xc4], edx
mov dword [esp + 0xc0], eax
jmp 0x41c8eb
cmp cx, dx
je 0x41c98c
push edi
call fcn.00436f60
add esp, 4
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0xc4]
mov ecx, edx
xor ecx, dword [esp + 0xc]
mov esi, eax
xor esi, dword [esp + 0x10]
or esi, ecx
mov esi, dword [ebp + 8]
je 0x41c9b6
mov ecx, ebx
push 0
push 0
push 0x68
lea edi, [esp + 0xcc]
push edi
push edx
push eax
call fcn.00437ce0
test eax, eax
js 0x41c9b6
movzx eax, word [esp + 0x11a]
push eax
call fcn.00436f00
add esp, 4
mov edi, eax
movzx eax, word [esp + 0x11a]
mov ecx, ebx
push 0
push 0
push eax
push edi
push dword [esp + 0x134]
push dword [esp + 0x134]
call fcn.00437ce0
test eax, eax
js 0x41c8bd
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp + 0x10]
movzx ecx, word [ecx + eax]
lea edx, [ecx - 0x41]
cmp dx, 0x1a
jae 0x41c963
or ecx, 0x20
movzx edx, word [edi + eax]
lea esi, [edx - 0x41]
cmp si, 0x1a
jae 0x41c973
or edx, 0x20
mov esi, dword [ebp + 8]
test cx, cx
je 0x41c8b4
add eax, 2
cmp cx, dx
je 0x41c950
jmp 0x41c8b4
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x100]
mov dword [esp + 0x14], eax
push edi
call fcn.00436f60
add esp, 4
mov edi, dword [esp + 4]
mov eax, dword [esp + 8]
push eax
call fcn.00436f60
add esp, 4
jmp 0x41c813
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
push dword [esp + 0x20]
call fcn.00436f60
add esp, 4
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
mov eax, dword [ebp + 0x18]
mov dword [eax], edx
mov dword [eax + 4], esi
mov eax, dword [ebp + 0x1c]
mov dword [eax], ecx
mov ecx, ebx
call fcn.004373a0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret