Function at 0x10031245
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x1006112a
call fcn.1005fb28
sub esp, 0x58
cmp byte [ebp + 8], 0
push ebx
push esi
push edi
mov ebx, ecx
mov dword [ebp - 0x10], esp
mov esi, edx
mov dword [ebp - 0x20], ebx
je 0x1003135d
cmp byte [ebp + 0x14], 0
je 0x1003133b
mov dword [ebp - 0x18], 0x20e3
xor esi, esi
cmp dword [ebp - 0x18], 0x2342
jle 0x100312da
mov ebx, esi
mov dword [ebp - 0x1c], esi
mov eax, esi
mov dword [ebp - 0x20], 0x2942
mov dword [ebp - 0x24], eax
mov esi, eax
mov edi, 0x429a
mov eax, esi
mov ecx, 0x1007d058
or eax, ebx
cdq
push edx
push eax
call fcn.100136b0
dec esi
dec edi
jne 0x1003129d
mov eax, dword [ebp - 0x24]
mov edi, dword [ebp - 0x1c]
add eax, edi
dec dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
jne 0x10031296
inc edi
mov dword [ebp - 0x1c], edi
push 0
pop esi
cmp edi, 0x66bb
jl 0x1003128a
inc ebx
cmp ebx, 0x1bfd
jl 0x10031287
mov dword [ebp - 4], esi
cmp dword [ebp - 0x18], 0x1e96
jge 0x10031313
mov edx, str.jedslg_kwlz_aauqkdazf_sinrkd_bntulivmw_cfprnqju
mov ecx, 0x1007d058
call fcn.100160b3
jmp 0x10031313
mov edx, dword [ebp + 0x18]
mov dword [edx], esi
cmp dword [edx], 3
jge 0x100315d2
mov esi, dword [ebp + 0xc]
mov ecx, dword [edx]
mov eax, dword [esi]
mov dword [eax + ecx*4], 0x44fb66c1
inc dword [edx]
cmp dword [edx], 3
jl 0x10031324
jmp 0x100315d2
mov edx, dword [ebp + 0x20]
mov dword [edx], 0
jmp 0x10031353
mov ecx, dword [edx]
mov eax, dword [esi]
mov dword [eax + ecx*4], 0x383de467
inc dword [edx]
cmp dword [edx], 1
jl 0x10031346
jmp 0x100315d2
cmp byte [ebp + 0x10], 0
je 0x100313e7
mov dword [ebp - 0x24], 0x31d8
cmp dword [ebp - 0x24], 0x335e
jle 0x100313c0
xor esi, esi
mov edi, esi
mov ebx, esi
mov eax, edi
lea ecx, [ebp - 0x64]
cdq
idiv ebx
mov eax, edx
cdq
push edx
push eax
call fcn.10001ade
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10031399
mov eax, dword [eax]
push eax
call fcn.1004752f
pop ecx
push esi
push 1
lea ecx, [ebp - 0x64]
call fcn.10013e9b
inc ebx
cmp ebx, 0x5c9e
jl 0x1003137d
inc edi
cmp edi, 0x7c1e
jl 0x1003137b
mov ebx, dword [ebp - 0x20]
cmp dword [ebp - 0x24], 0x2fae
jge 0x100313d4
push str.giqq_rryu_bqwflno_lxujmwkzw_ptuiu_yraa
call fcn.1004752f
pop ecx
or dword [ebp - 4], 0xffffffff
push dword [ebx]
mov ecx, dword [ebp + 0x1c]
call fcn.10016d17
jmp 0x100315d2
push 3
lea ecx, [ebp - 0x34]
call fcn.100138f8
mov dword [ebp - 4], 4
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x1c], 0xfffffff8
mov dword [ebp - 0x14], 3
push 1
call fcn.100138f8
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x4c]
xor esi, esi
mov dword [ebp - 0x24], 0x925f321e
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x18], esi
push 2
call fcn.100138f8
mov byte [ebp - 4], 6
mov dword [ebp - 0x20], 0x188e
cmp dword [ebp - 0x20], 0x1a29
jle 0x10031479
mov edi, esi
mov ebx, esi
mov dword [ebp - 0x28], esi
mov eax, esi
mov ecx, 0x1007d058
xor eax, ebx
or eax, edi
cdq
push edx
push eax
call fcn.100136b0
inc esi
cmp esi, 0x3d44
jl 0x10031448
inc ebx
push 0
pop esi
cmp ebx, 0x6213
jl 0x10031445
inc edi
cmp edi, 0x586
jl 0x10031443
mov byte [ebp - 4], 7
cmp dword [ebp - 0x20], 0x15e9
jge 0x100314b3
mov edx, str.inhap_xgy_xkl_takwlxq_yjzpkwuuy_rdpzh_rwzokg_wjdqt_huxmutz_mmxii_xqlwklsi_cmqevnds_ncgdozhpg_zorj
mov ecx, 0x1007d058
call fcn.100160b3
jmp 0x100314b3
lea eax, [ebp + 8]
mov dword [ebp - 4], 6
push eax
lea edx, [ebp - 0x34]
call fcn.1003099e
push ecx
lea eax, [ebp - 0x40]
push eax
lea edx, [ebp + 8]
call fcn.10030484
add esp, 0xc
mov dword [ebp + 8], esi
jmp 0x100314eb
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x4c]
mov dword [eax + ecx*4], 0xc327405e
inc dword [ebp + 8]
cmp dword [ebp + 8], 2
jl 0x100314db
dec dword [ebp - 0x24]
xor ecx, ecx
mov eax, dword [ebp - 0x14]
cmp eax, 1
setle cl
xor eax, eax
cmp ecx, 0x88ce324e
mov ecx, 0xf4ed832c
setne al
xor edx, edx
sub ecx, eax
mov eax, dword [ebp - 0x40]
cmp ecx, dword [eax]
mov eax, dword [ebp - 0x34]
setle dl
xor ebx, ebx
cmp edx, dword [eax]
mov eax, dword [ebp - 0x1c]
setle bl
xor ecx, ecx
sub ebx, eax
mov eax, dword [ebp - 0x14]
cmp ebx, eax
mov eax, dword [ebp - 0x40]
setge cl
mov dword [eax], ecx
xor eax, eax
mov edx, dword [ebp - 0x34]
cmp ecx, dword [edx + 8]
setle al
xor ecx, ecx
cmp eax, dword [edx]
setge cl
sub ecx, 0xfffa
jne 0x1003155c
cmp dword [ebp - 0x14], esi
jne 0x1003155c
mov eax, esi
jmp 0x1003155f
xor eax, eax
inc eax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
neg eax
sbb eax, eax
neg eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 0x18], esi
jne 0x10031581
cmp dword [ebp - 0x20], esi
je 0x10031584
xor esi, esi
inc esi
mov eax, dword [ebp - 0x34]
cmp esi, dword [eax]
jg 0x1003158e
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov edx, dword [edx + 8]
neg eax
cmp eax, 0xffff
mov eax, dword [ebp - 0x4c]
push eax
sbb ecx, ecx
neg ecx
sub ecx, edx
neg ecx
sbb ecx, ecx
inc ecx
sub ecx, edx
mov dword [eax], ecx
call fcn.10047697
push dword [ebp - 0x40]
call fcn.10047697
cmp dword [ebp - 0x34], 0
pop ecx
pop ecx
je 0x100315d2
push dword [ebp - 0x34]
call fcn.10047697
pop ecx
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret