Function at 0x10003e50
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, dword [esp + 8]
test ebx, ebx
jne 0x10003e5e
lea eax, [ebx + 0x57]
pop ebx
ret
push esi
mov esi, dword [esp + 0x10]
test esi, esi
jne 0x10003e6d
lea eax, [esi + 0x57]
pop esi
pop ebx
ret
push ebp
mov ebp, dword [esp + 0x18]
cmp ebp, 8
ja 0x10003e80
pop ebp
pop esi
mov eax, 0x57
pop ebx
ret
mov dword [ebx], 0
lea eax, [ebp - 4]
mov edx, dword [esi]
lea ecx, [esi + 4]
xor edx, 0xe9b35
mov dword [esp + 0x10], eax
push edi
cmp eax, 4
jb 0x10003ece
mov ebp, 4
lea eax, [esi + 4]
mov edi, 0x8790ea3
sub ebp, eax
lea ecx, [ecx]
xor edx, edi
lea ecx, [ecx + 4]
xor dword [ecx - 4], edx
lea eax, [ecx + ebp]
add edi, 0x3a6cd4
cmp eax, dword [esp + 0x14]
jbe 0x10003eb0
mov ebp, dword [esp + 0x1c]
lea ecx, [esi + 4]
mov eax, dword [ecx]
lea edi, [ebp - 8]
xor ecx, ecx
mov dword [esp + 0x14], eax
xor edx, edx
jmp 0x10003ee0
mov al, byte [edx + esi + 8]
test al, al
je 0x10003eec
add ecx, ecx
jmp 0x10003eed
inc ecx
movzx eax, al
inc edx
add ecx, eax
cmp edx, edi
jbe 0x10003ee0
or eax, 0xffffffff
test ecx, ecx
cmove ecx, eax
cmp dword [esp + 0x14], ecx
je 0x10003f0f
pop edi
pop ebp
pop esi
mov eax, 0xd
pop ebx
ret
mov edx, 8
cmp ebp, 0xa
jbe 0x10004100
lea ecx, [ecx]
mov cl, byte [edx + esi + 1]
lea edx, [edx + 2]
mov al, byte [edx + esi - 2]
movzx edi, cl
lea ebp, [edi + edx]
cmp ebp, dword [esp + 0x1c]
ja 0x10004100
test al, al
jne 0x10003f47
test cl, cl
je 0x10004100
movzx eax, al
dec eax
cmp eax, 0xd
ja case.default.0x10003f54
jmp dword [eax*4 + 0x10004108]
test cl, cl
je case.default.0x10003f54
cmp cl, 0x1f
ja case.default.0x10003f54
lea eax, [edx + esi]
push edi
push eax
lea eax, [ebx + 8]
push eax
call fcn.10005890
mov byte [edi + ebx + 8], 0
jmp 0x100040ee
cmp cl, 4
jne case.default.0x10003f54
mov eax, dword [edx + esi]
mov dword [ebx], eax
jmp case.default.0x10003f54
cmp cl, 4
jne case.default.0x10003f54
mov eax, dword [edx + esi]
mov dword [ebx + 4], eax
jmp case.default.0x10003f54
test cl, cl
je case.default.0x10003f54
cmp cl, 0x1f
ja case.default.0x10003f54
lea eax, [edx + esi]
push edi
push eax
lea eax, [ebx + 0x28]
push eax
call fcn.10005890
mov byte [edi + ebx + 0x28], 0
jmp 0x100040ee
cmp cl, 4
jne case.default.0x10003f54
mov eax, dword [edx + esi]
mov dword [ebx + 0x48], eax
jmp case.default.0x10003f54
cmp cl, 2
jne case.default.0x10003f54
mov ax, word [edx + esi]
mov word [ebx + 0x50], ax
jmp case.default.0x10003f54
cmp cl, 4
jne case.default.0x10003f54
mov eax, dword [edx + esi]
mov dword [ebx + 0x4c], eax
jmp case.default.0x10003f54
cmp cl, 2
jne case.default.0x10003f54
mov ax, word [edx + esi]
mov word [ebx + 0x52], ax
jmp case.default.0x10003f54
cmp cl, 4
jne case.default.0x10003f54
mov eax, dword [edx + esi]
mov dword [ebx + 0x54], eax
jmp case.default.0x10003f54
cmp cl, 4
jne case.default.0x10003f54
mov eax, dword [edx + esi]
mov dword [ebx + 0x58], eax
jmp case.default.0x10003f54
test cl, cl
je case.default.0x10003f54
cmp cl, 0x3e
ja case.default.0x10003f54
lea eax, [edx + esi]
push edi
push eax
lea eax, [ebx + 0x5c]
push eax
call fcn.10005890
shr edi, 1
add esp, 0xc
xor eax, eax
mov word [ebx + edi*2 + 0x5c], ax
jmp case.default.0x10003f54
test cl, cl
je case.default.0x10003f54
cmp cl, 0x3e
ja case.default.0x10003f54
lea eax, [edx + esi]
push edi
push eax
lea eax, [ebx + 0x9c]
push eax
call fcn.10005890
shr edi, 1
add esp, 0xc
xor eax, eax
mov word [ebx + edi*2 + 0x9c], ax
jmp case.default.0x10003f54
test cl, cl
je case.default.0x10003f54
cmp cl, 0x2f
ja case.default.0x10003f54
lea eax, [edx + esi]
push edi
push eax
lea eax, [ebx + 0xdc]
push eax
call fcn.10005890
mov byte [edi + ebx + 0xdc], 0
jmp 0x100040ee
test cl, cl
je case.default.0x10003f54
cmp cl, 0x2f
ja case.default.0x10003f54
lea eax, [edx + esi]
push edi
push eax
lea eax, [ebx + 0x10c]
push eax
call fcn.10005890
mov byte [edi + ebx + 0x10c], 0
add esp, 0xc
mov edx, ebp
lea ecx, [edx + 2]
cmp ecx, dword [esp + 0x1c]
jb 0x10003f20
pop edi
pop ebp
pop esi
xor eax, eax
pop ebx
ret