Function at 0x43e750
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x4c
mov ebp, dword [esp + 0x60]
movzx eax, word [ebp]
mov dword [esp + 0x24], 0x5657beaa
mov byte [esp + 0x28], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 4
ja 0x43e7c7
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x24]
lea esi, [ecx + edx]
add esi, 0xfdc8a786
add ecx, 0xfdc8a786
and ecx, edx
mov edx, esi
not edx
and edx, ecx
add edx, ecx
not ecx
and ecx, esi
sub ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x21
mov edx, dword [esp]
mov byte [esp + edx + 0x24], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 5
jb 0x43e780
xor ecx, ecx
cmp dword [esp + 0x24], eax
setne cl
xor ebx, ebx
jmp dword [ecx*4 + 0x449f5c]
mov eax, dword [ebp + 0x3c]
mov ecx, dword [ebp + eax]
mov dword [esp + 0x24], 0x23209e96
mov word [esp + 0x28], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 5
ja 0x43e830
nop
nop
mov edx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 0x24]
add edx, 0xee911d5b
xor edx, esi
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0xc]
add dl, 0x83
mov esi, dword [esp]
mov byte [esp + esi + 0x24], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 6
jb 0x43e800
xor edx, edx
cmp ecx, dword [esp + 0x24]
setne dl
xor ebx, ebx
jmp dword [edx*4 + 0x449f64]
mov edi, dword [ebp + eax + 0x78]
cmp dword [ebp + eax + 0x7c], 0
sete al
test edi, edi
sete cl
or cl, al
movzx eax, cl
xor ebx, ebx
jmp dword [eax*4 + 0x449f6c]
mov eax, dword [ebp + edi + 0x20]
add eax, ebp
mov dword [esp + 0x44], eax
mov eax, dword [ebp + edi + 0x24]
add eax, ebp
mov dword [esp + 0x20], eax
mov eax, dword [ebp + edi + 0x1c]
add eax, ebp
mov dword [esp + 0x1c], eax
mov esi, dword [0x44ba9c]
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], edi
jmp dword [eax*4 + 0x449f74]
mov eax, edi
mov edi, dword [0x44ba98]
mov eax, dword [ebp + eax + 0x18]
add eax, edi
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x43e8b6
shl eax, 3
mov ecx, eax
push ecx
call fcn.00409cc0
add esp, 4
mov ebx, eax
mov ecx, edi
and ecx, 8
mov eax, edi
or edi, 8
imul edi, ecx
xor ecx, 8
and eax, 0xfffffff7
imul eax, ecx
lea ebp, [eax + edi]
lea edx, [esi + ebp]
cmp ebx, esi
jbe 0x43e99d
cmp edx, ebx
jbe 0x43e99d
test ebp, ebp
je 0x43e9f6
lea ecx, [esi + eax]
dec ecx
mov dword [esp + 4], ebx
lea edx, [ebx + eax]
dec edx
neg eax
mov ebp, dword [esp + 0x60]
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [ecx + edi]
mov byte [edx + edi], bl
movzx ebx, byte [ecx + edi - 1]
mov byte [edx + edi - 1], bl
movzx ebx, byte [ecx + edi - 2]
mov byte [edx + edi - 2], bl
movzx ebx, byte [ecx + edi - 3]
mov byte [edx + edi - 3], bl
movzx ebx, byte [ecx + edi - 4]
mov byte [edx + edi - 4], bl
movzx ebx, byte [ecx + edi - 5]
mov byte [edx + edi - 5], bl
movzx ebx, byte [ecx + edi - 6]
mov byte [edx + edi - 6], bl
movzx ebx, byte [ecx + edi - 7]
mov byte [edx + edi - 7], bl
add edi, 0xfffffff8
cmp eax, edi
jne 0x43e910
mov ebx, dword [esp + 4]
jmp 0x43e9fa
mov eax, dword [ebp + edi + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x43e97b
shl eax, 3
mov ecx, eax
push ecx
call fcn.00409cc0
add esp, 4
mov dword [0x44ba9c], eax
xor ebx, ebx
xor eax, eax
cmp ebx, dword [ebp + edi + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x449f84]
mov ecx, ebp
shr ecx, 2
mov edi, ebx
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov edi, ebx
add edi, ebp
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov esi, dword [0x44ba9c]
xor eax, eax
test esi, esi
sete al
mov ebp, dword [esp + 0x60]
mov edi, dword [esp + 8]
jmp dword [eax*4 + 0x449f7c]
push esi
call fcn.00409cd0
add esp, 4
mov dword [0x44ba9c], ebx
xor ebx, ebx
xor eax, eax
cmp ebx, dword [ebp + edi + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x449f84]
mov ebp, dword [esp + 0x60]
xor eax, eax
test esi, esi
sete al
mov edi, dword [esp + 8]
jmp dword [eax*4 + 0x449f7c]
mov dword [0x44ba9c], ebx
xor ebx, ebx
xor eax, eax
cmp ebx, dword [ebp + edi + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x449f84]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
movzx eax, word [eax + edx*2]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + eax*4]
mov dword [0x44baa0], eax
inc edx
xor eax, eax
mov ebp, dword [esp + 0x60]
mov ecx, dword [esp + 8]
cmp edx, dword [ebp + ecx + 0x18]
setb al
mov ebx, dword [esp + 4]
jmp dword [eax*4 + 0x449f84]
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x44]
mov dword [esp + 0x10], edx
mov eax, dword [eax + edx*4]
add eax, ebp
mov edx, 0xffffffff
xor esi, esi
nop
nop
nop
mov ecx, esi
cmp byte [eax + edx + 1], 0
lea edx, [edx + 1]
lea esi, [esi + 1]
jne 0x43ea80
mov dword [esp + 0x24], 0x6060097
mov word [esp + 0x28], 0
mov dword [esp], 0
mov esi, dword [esp]
cmp esi, 5
ja 0x43eae0
nop
nop
nop
mov esi, dword [esp]
mov edi, dword [esp]
movzx edi, byte [esp + edi + 0x24]
add esi, 0x51b9a14a
xor esi, edi
mov dword [esp + 0xc], esi
mov ebx, dword [esp + 0xc]
add bl, 0xb6
mov esi, dword [esp]
mov byte [esp + esi + 0x24], bl
inc dword [esp]
mov esi, dword [esp]
cmp esi, 6
jb 0x43eab0
test edx, edx
mov dword [esp + 0x14], eax
je 0x43eb00
mov ebx, dword [esp + 0x24]
lea esi, [edx - 1]
cmp esi, 3
jae 0x43eb10
mov esi, 0xb14a5e2
mov ebp, eax
jmp 0x43eb4c
mov edi, 0xb14a5e2
jmp 0x43eb71
mov edi, ecx
and edi, 0xfffffffc
mov esi, 0xb14a5e2
mov ebp, eax
nop
nop
nop
nop
movsx eax, byte [ebp]
xor eax, esi
imul eax, ebx
movsx esi, byte [ebp + 1]
xor esi, eax
imul esi, ebx
movsx eax, byte [ebp + 2]
xor eax, esi
imul eax, ebx
movsx esi, byte [ebp + 3]
add ebp, 4
xor esi, eax
imul esi, ebx
add edi, 0xfffffffc
jne 0x43eb20
mov edi, esi
test dl, 3
je 0x43eb71
and ecx, 3
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
movsx edi, byte [ebp + edx]
xor edi, esi
imul edi, ebx
inc edx
mov esi, edi
cmp ecx, edx
jne 0x43eb60
mov eax, edi
xor eax, 0x43ac3278
xor ecx, ecx
or eax, dword [0x44baa0]
sete cl
jmp dword [ecx*4 + 0x449f8c]
jmp dword [0x449fa0]
xor ecx, ecx
mov eax, dword [esp + 0x14]
cmp byte [eax], 0x4e
setne cl
mov ebp, dword [esp + 0x60]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 4]
jmp dword [ecx*4 + 0x449fa4]
mov ecx, eax
xor eax, eax
cmp byte [ecx + 1], 0x74
setne al
jmp dword [eax*4 + 0x449fac]
mov eax, dword [esp + 0x20]
movzx eax, word [eax + edx*2]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + eax*4]
add eax, ebp
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0xffffffff
xor ebp, ebp
xor eax, eax
cmp ebp, 0x20
setl al
jmp dword [eax*4 + 0x449fb4]
jmp dword [esi*4 + 0x449ffc]
xor eax, eax
cmp ebp, 0x20
setl al
jmp dword [eax*4 + 0x449fb4]
mov eax, dword [esp + 0x14]
add eax, ebp
lea ecx, [esp + 0x24]
push ecx
push eax
call fcn.00401000
add esp, 8
mov ecx, dword [esp + 0x3c]
mov edx, ecx
shr edx, 0xa
and edx, 4
mov esi, 1
jmp dword [edx + 0x449fbc]
mov dword [esp + 0x48], eax
movzx ebx, byte [esp + 0x2a]
xor edx, edx
cmp bl, 0xc2
sete dl
jmp dword [edx*4 + 0x449fc4]
xor edx, edx
cmp bl, 0xc3
sete dl
jmp dword [edx*4 + 0x449fd4]
mov eax, dword [case.0x43e9cc.17]
mov ebx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov edx, ecx
not edx
or edx, 0xfffffff7
lea eax, [edx*2 + 1]
mov dword [esp + 0x40], eax
xor eax, eax
cmp edx, dword [esp + 0x40]
setne al
jmp dword [eax*4 + 0x449fcc]
xor edx, edx
cmp bl, 0xb8
sete dl
jmp dword [edx*4 + 0x449fec]
mov edx, ecx
not edx
lea ebx, [ecx + ecx]
not ebx
add ebx, ecx
mov esi, ecx
and esi, 0xb5ad9461
and ebx, 0x4a526b9e
or ebx, esi
xor ebx, 0xb5ad9471
and edx, 0x10
or edx, ebx
xor edx, ecx
xor ecx, ecx
cmp edx, 0xffffffff
setne cl
jmp dword [ecx*4 + 0x449ff4]
add ebp, dword [esp + 0x48]
xor eax, eax
mov ebx, dword [esp + 4]
jmp dword [eax*4 + 0x449ffc]
mov eax, 1
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x18], ecx
mov ebx, dword [esp + 4]
jmp dword [eax*4 + 0x449ffc]
xor eax, eax
mov esi, dword [esp + 0x18]
cmp esi, 0xffffffff
setne al
mov ebp, dword [esp + 0x60]
jmp dword [eax*4 + 0x44a004]
xor eax, eax
xor edx, edx
cmp eax, dword [0x44ba98]
setb dl
xor ecx, ecx
jmp dword [edx*4 + 0x44a00c]
mov dword [edx + ecx*8 + 4], esi
xor edx, edx
mov al, 1
jmp dword [edx*4 + 0x44a01c]
inc ecx
xor edx, edx
cmp ecx, dword [0x44ba98]
setb dl
jmp dword [edx*4 + 0x44a00c]
mov edx, dword [0x44ba9c]
xor ebx, ebx
cmp dword [edx + ecx*8], edi
sete bl
jmp dword [ebx*4 + 0x44a014]
mov edx, 1
jmp dword [edx*4 + 0x44a01c]
and al, 1
movzx eax, al
mov bl, 1
jmp dword [eax*4 + 0x44a024]
mov eax, dword [0x44ba98]
lea ecx, [eax + 1]
mov dword [0x44ba98], ecx
mov ecx, dword [0x44ba9c]
mov dword [ecx + eax*8], edi
mov dword [ecx + eax*8 + 4], esi
mov bl, 1
mov edx, dword [esp + 0x10]
inc edx
xor eax, eax
mov ecx, dword [esp + 8]
cmp edx, dword [ebp + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x449f84]
inc edx
xor eax, eax
mov ecx, dword [esp + 8]
cmp edx, dword [ebp + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x449f84]
mov edx, dword [esp + 0x10]
inc edx
xor eax, eax
mov ecx, dword [esp + 8]
cmp edx, dword [ebp + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x449f84]
and bl, 1
mov eax, ebx
add esp, 0x4c
pop esi
pop edi
pop ebx
pop ebp
ret