Function at 0x10003b80
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 0xc]
sub esp, 0x60
cmp eax, 0x10
push ebx
push ebp
push esi
push edi
jb 0x10003bc8
cmp eax, 0x18
jae 0x10003bcd
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x78]
mov ebx, 0xc
mov dword [eax], ebx
mov dword [eax + 4], 0x10
mov edx, dword [ecx]
mov dword [esp + 0x50], edx
mov edx, dword [ecx + 4]
mov dword [esp + 0x54], edx
mov edx, dword [ecx + 8]
mov dword [esp + 0x58], edx
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x5c], ecx
jmp 0x10003c14
cmp eax, 0x18
jb 0x10003bf3
cmp eax, 0x20
jae 0x10003bf3
mov eax, dword [esp + 0x74]
mov esi, dword [esp + 0x78]
mov ebx, 0xe
mov ecx, 6
mov dword [eax], ebx
mov dword [eax + 4], 0x18
lea edi, [esp + 0x50]
jmp 0x10003c12
mov eax, dword [esp + 0x74]
mov esi, dword [esp + 0x78]
mov ebx, 0x10
mov ecx, 8
mov dword [eax], ebx
mov dword [eax + 4], 0x20
lea edi, [esp + 0x50]
rep movsd dword es:[edi], dword [esi]
cmp ebx, 0xc
lea esi, [eax + 8]
jne 0x10003d0e
xor eax, eax
xor edx, edx
xor ecx, ecx
mov dl, byte [eax + 0x10040c58]
mov cl, byte [esp + eax + 0x50]
xor edx, ecx
mov ecx, eax
and ecx, 0x80000003
jns 0x10003c41
dec ecx
or ecx, 0xfffffffc
inc ecx
shl ecx, 8
inc eax
mov dl, byte [edx + ecx + 0x10040858]
cmp eax, 0x10
mov byte [esp + eax + 0xf], dl
jl 0x10003c22
lea eax, [esp + 0x30]
lea ecx, [esp + 0x10]
push eax
push ecx
call fcn.10003980
mov edi, 2
lea edx, [esp + 0x18]
add esp, 8
xor eax, eax
sub edi, edx
xor edx, edx
lea ecx, [esp + eax + 0x10]
mov dl, byte [eax + 0x10040c68]
mov ebp, edx
xor edx, edx
mov dl, byte [esp + eax + 0x30]
xor ebp, edx
lea edx, [edi + ecx]
and edx, 0x80000003
jns 0x10003c9a
dec edx
or edx, 0xfffffffc
inc edx
shl edx, 8
inc eax
mov dl, byte [edx + ebp + 0x10040858]
cmp eax, 0x10
mov byte [ecx], dl
jl 0x10003c74
lea eax, [esp + 0x20]
lea ecx, [esp + 0x10]
push eax
push ecx
call fcn.10003980
add esp, 8
xor eax, eax
mov dl, byte [esp + eax + 0x50]
mov cl, byte [esp + eax + 0x20]
xor cl, dl
mov byte [esp + eax + 0x20], cl
inc eax
cmp eax, 0x10
jl 0x10003cc0
xor eax, eax
xor ecx, ecx
xor edx, edx
mov cl, byte [eax + 0x10040c78]
mov dl, byte [esp + eax + 0x20]
xor ecx, edx
mov edx, eax
and edx, 0x80000003
jns 0x10003cf5
dec edx
or edx, 0xfffffffc
inc edx
shl edx, 8
inc eax
mov cl, byte [ecx + edx + 0x10040858]
cmp eax, 0x10
mov byte [esp + eax + 0xf], cl
jl 0x10003cd6
jmp 0x10003f1a
cmp ebx, 0xe
jne 0x10003e1b
xor eax, eax
xor edx, edx
xor ecx, ecx
mov dl, byte [eax + 0x10040c88]
mov cl, byte [esp + eax + 0x50]
xor edx, ecx
mov ecx, eax
and ecx, 0x80000003
jns 0x10003d38
dec ecx
or ecx, 0xfffffffc
inc ecx
shl ecx, 8
inc eax
mov dl, byte [edx + ecx + 0x10040858]
cmp eax, 0x10
mov byte [esp + eax + 0xf], dl
jl 0x10003d19
lea eax, [esp + 0x30]
lea ecx, [esp + 0x10]
push eax
push ecx
call fcn.10003980
add esp, 8
xor eax, eax
mov dl, byte [esp + eax + 0x60]
mov cl, byte [esp + eax + 0x30]
xor cl, dl
mov byte [esp + eax + 0x30], cl
inc eax
cmp eax, 8
jl 0x10003d60
mov edi, 2
lea ecx, [esp + 0x10]
xor eax, eax
sub edi, ecx
xor edx, edx
lea ecx, [esp + eax + 0x10]
mov dl, byte [eax + 0x10040c98]
mov ebp, edx
xor edx, edx
mov dl, byte [esp + eax + 0x30]
xor ebp, edx
lea edx, [edi + ecx]
and edx, 0x80000003
jns 0x10003da7
dec edx
or edx, 0xfffffffc
inc edx
shl edx, 8
inc eax
mov dl, byte [edx + ebp + 0x10040858]
cmp eax, 0x10
mov byte [ecx], dl
jl 0x10003d81
lea eax, [esp + 0x20]
lea ecx, [esp + 0x10]
push eax
push ecx
call fcn.10003980
add esp, 8
xor eax, eax
mov dl, byte [esp + eax + 0x50]
mov cl, byte [esp + eax + 0x20]
xor cl, dl
mov byte [esp + eax + 0x20], cl
inc eax
cmp eax, 0x10
jl 0x10003dcd
xor eax, eax
xor ecx, ecx
xor edx, edx
mov cl, byte [eax + 0x10040ca8]
mov dl, byte [esp + eax + 0x20]
xor ecx, edx
mov edx, eax
and edx, 0x80000003
jns 0x10003e02
dec edx
or edx, 0xfffffffc
inc edx
shl edx, 8
inc eax
mov cl, byte [ecx + edx + 0x10040858]
cmp eax, 0x10
mov byte [esp + eax + 0xf], cl
jl 0x10003de3
jmp 0x10003f1a
xor eax, eax
xor edx, edx
xor ecx, ecx
mov dl, byte [eax + 0x10040cb8]
mov cl, byte [esp + eax + 0x50]
xor edx, ecx
mov ecx, eax
and ecx, 0x80000003
jns 0x10003e3c
dec ecx
or ecx, 0xfffffffc
inc ecx
shl ecx, 8
inc eax
mov dl, byte [edx + ecx + 0x10040858]
cmp eax, 0x10
mov byte [esp + eax + 0xf], dl
jl 0x10003e1d
lea eax, [esp + 0x30]
lea ecx, [esp + 0x10]
push eax
push ecx
call fcn.10003980
add esp, 8
xor eax, eax
mov dl, byte [esp + eax + 0x60]
mov cl, byte [esp + eax + 0x30]
xor cl, dl
mov byte [esp + eax + 0x30], cl
inc eax
cmp eax, 0x10
jl 0x10003e64
mov edi, 2
lea ecx, [esp + 0x10]
xor eax, eax
sub edi, ecx
xor edx, edx
lea ecx, [esp + eax + 0x10]
mov dl, byte [eax + str.Qw__n]
mov ebp, edx
xor edx, edx
mov dl, byte [esp + eax + 0x30]
xor ebp, edx
lea edx, [edi + ecx]
and edx, 0x80000003
jns 0x10003eab
dec edx
or edx, 0xfffffffc
inc edx
shl edx, 8
inc eax
mov dl, byte [edx + ebp + 0x10040858]
cmp eax, 0x10
mov byte [ecx], dl
jl 0x10003e85
lea eax, [esp + 0x20]
lea ecx, [esp + 0x10]
push eax
push ecx
call fcn.10003980
add esp, 8
xor eax, eax
mov dl, byte [esp + eax + 0x50]
mov cl, byte [esp + eax + 0x20]
xor cl, dl
mov byte [esp + eax + 0x20], cl
inc eax
cmp eax, 0x10
jl 0x10003ed1
xor eax, eax
xor ecx, ecx
xor edx, edx
mov cl, byte [eax + 0x10040cd8]
mov dl, byte [esp + eax + 0x20]
xor ecx, edx
mov edx, eax
and edx, 0x80000003
jns 0x10003f06
dec edx
or edx, 0xfffffffc
inc edx
shl edx, 8
inc eax
mov cl, byte [ecx + edx + 0x10040858]
cmp eax, 0x10
mov byte [esp + eax + 0xf], cl
jl 0x10003ee7
lea edx, [esp + 0x40]
lea eax, [esp + 0x10]
push edx
push eax
call fcn.10003980
add esp, 8
xor eax, eax
mov cl, byte [esp + eax + 0x30]
mov dl, byte [esp + eax + 0x40]
xor dl, cl
mov byte [esp + eax + 0x40], dl
inc eax
cmp eax, 0x10
jl 0x10003f2e
lea ecx, [ebx + 1]
shl ecx, 4
test ecx, ecx
jle 0x10003f5e
mov edx, ecx
xor eax, eax
mov edi, esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
push esi
lea eax, [esp + 0x54]
push 0
push eax
call fcn.10003af0
push esi
lea ecx, [esp + 0x40]
push 0x13
push ecx
call fcn.10003af0
lea ebp, [esi + 0x10]
lea edx, [esp + 0x48]
push ebp
push 0
push edx
call fcn.10003af0
push ebp
lea eax, [esp + 0x48]
push 0x13
push eax
call fcn.10003af0
lea edi, [esi + 0x20]
lea ecx, [esp + 0x50]
push edi
push 0
push ecx
call fcn.10003af0
push edi
lea edx, [esp + 0x80]
push 0x13
push edx
call fcn.10003af0
add esp, 0x48
lea edi, [esi + 0x30]
lea eax, [esp + 0x40]
push edi
push 0
push eax
call fcn.10003af0
push edi
lea ecx, [esp + 0x60]
push 0x13
push ecx
call fcn.10003af0
lea edi, [esi + 0x40]
lea edx, [esp + 0x68]
push edi
push 0
push edx
call fcn.10003af0
push edi
lea eax, [esp + 0x58]
push 0x1f
push eax
call fcn.10003af0
lea edi, [esi + 0x50]
lea ecx, [esp + 0x60]
push edi
push 0
push ecx
call fcn.10003af0
push edi
lea edx, [esp + 0x60]
push 0x1f
push edx
call fcn.10003af0
add esp, 0x48
lea edi, [esi + 0x60]
lea eax, [esp + 0x20]
push edi
push 0
push eax
call fcn.10003af0
push edi
lea ecx, [esp + 0x50]
push 0x1f
push ecx
call fcn.10003af0
lea edi, [esi + 0x70]
push edi
push 0
lea edx, [esp + 0x60]
push edx
call fcn.10003af0
push edi
lea eax, [esp + 0x78]
push 0x1f
push eax
call fcn.10003af0
lea edi, [esi + 0x80]
lea ecx, [esp + 0x80]
push edi
push 0
push ecx
call fcn.10003af0
push edi
lea edx, [esp + 0x70]
push 0x43
push edx
call fcn.10003af0
add esp, 0x48
lea edi, [esi + 0x90]
lea eax, [esp + 0x30]
push edi
push 0
push eax
call fcn.10003af0
push edi
lea ecx, [esp + 0x30]
push 0x43
push ecx
call fcn.10003af0
lea edi, [esi + 0xa0]
lea edx, [esp + 0x38]
push edi
push 0
push edx
call fcn.10003af0
push edi
lea eax, [esp + 0x68]
push 0x43
push eax
call fcn.10003af0
lea edi, [esi + 0xb0]
lea ecx, [esp + 0x70]
push edi
push 0
push ecx
call fcn.10003af0
push edi
lea edx, [esp + 0x90]
push 0x43
push edx
call fcn.10003af0
add esp, 0x48
lea edi, [esi + 0xc0]
lea eax, [esp + 0x50]
push edi
push 0
push eax
call fcn.10003af0
push edi
lea ecx, [esp + 0x40]
push 0x61
push ecx
call fcn.10003af0
add esp, 0x18
cmp ebx, 0xc
jle 0x1000418f
lea edi, [esi + 0xd0]
lea edx, [esp + 0x30]
push edi
push 0
push edx
call fcn.10003af0
push edi
lea eax, [esp + 0x30]
push 0x61
push eax
call fcn.10003af0
lea edi, [esi + 0xe0]
lea ecx, [esp + 0x38]
push edi
push 0
push ecx
call fcn.10003af0
push edi
lea edx, [esp + 0x68]
push 0x61
push edx
call fcn.10003af0
add esp, 0x30
cmp ebx, 0xe
jle 0x1000418f
lea edi, [esi + 0xf0]
lea eax, [esp + 0x40]
push edi
push 0
push eax
call fcn.10003af0
push edi
lea ecx, [esp + 0x60]
push 0x61
push ecx
call fcn.10003af0
lea edi, [esi + 0x100]
lea edx, [esp + 0x68]
push edi
push 0
push edx
call fcn.10003af0
push edi
lea eax, [esp + 0x58]
push 0x6d
push eax
call fcn.10003af0
add esp, 0x30
cmp dword [esp + 0x80], 1
jne 0x10004204
mov edx, ebx
mov edi, esi
lea ecx, [esp + 0x10]
xor eax, eax
shl edx, 4
sub edi, ecx
add esi, edx
lea ecx, [esp + eax + 0x10]
inc eax
cmp eax, 0x10
mov dl, byte [ecx + edi]
mov byte [ecx], dl
mov dl, byte [esi + eax - 1]
mov byte [ecx + edi], dl
mov cl, byte [ecx]
mov byte [esi + eax - 1], cl
jl 0x100041aa
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
cmp eax, 1
jl 0x10004204
add esi, 0xfffffff0
mov edi, eax
lea edx, [esp + 0x10]
push edx
push ebp
call fcn.10003980
push ebp
push esi
call fcn.10003980
add esp, 0x10
xor eax, eax
mov cl, byte [esp + eax + 0x10]
mov byte [esi + eax], cl
inc eax
cmp eax, 0x10
jl 0x100041ee
add ebp, 0x10
sub esi, 0x10
dec edi
jne 0x100041d7
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x60
ret