Function at 0x1012f260
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x60
push ebp
mov ebp, ecx
mov dword [esp + 0x50], 1
push 3
mov dword [esp + 0x14], ebp
mov dword [esp + 0x5c], 0xffffffff
movzx eax, word [ebp + 0x16]
mov dword [esp + 0x58], eax
neg eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 1
call fcn.1012e240
mov eax, dword [ebp + 0x83d64]
test eax, eax
je 0x1012f2bd
push 3
push 0
push 0x800
push dword [ebp + 0x83d68]
call eax
add esp, 0x10
test eax, eax
jne 0x1012f84d
movzx eax, word [ebp + 0x14]
mov ecx, 3
push ebx
sub eax, ecx
mov dword [esp + 0x10], ecx
push esi
push edi
cmp eax, ecx
jle 0x1012f4ed
movzx edx, word [ebp + 0x16]
lea esi, [edx - 3]
nop
mov edi, dword [ebp + 0x194]
mov eax, ecx
and eax, 7
mov ebx, edi
lea ecx, [eax*4]
or ecx, 2
shr ebx, cl
lea ecx, [eax + eax]
and ebx, 1
add ebx, 3
mov eax, ebx
mov dword [esp + 0x34], ebx
and eax, 1
or ecx, eax
add ecx, ecx
shr edi, cl
and edi, 3
mov dword [esp + 0x20], edi
cmp ebx, esi
jge 0x1012f4d5
lea ecx, [edi + edi]
mov dword [esp + 0x48], ecx
nop word [eax + eax]
imul edx, dword [esp + 0x18]
mov eax, dword [ebp + 8]
mov ebp, 1
mov dword [esp + 0x30], 0
mov dword [esp + 0x10], 0
add edx, ebx
lea edi, [eax + edx*8]
movzx eax, word [edi + ecx]
mov dword [esp + 0x14], edi
mov dword [esp + 0x24], eax
nop
lea ecx, [ebp*8]
movzx edx, word [ecx + edi + 2]
mov eax, ecx
neg eax
mov dword [esp + 0x38], edx
movzx esi, word [eax + edi + 2]
add eax, dword [esp + 0x20]
movzx ebx, word [edi + eax*2]
mov eax, dword [esp + 0x20]
add eax, ecx
movzx ecx, word [edi + eax*2]
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x10]
add eax, edx
add eax, esi
add eax, eax
sub eax, ecx
sub ecx, dword [esp + 0x24]
sub eax, ebx
mov dword [esp + 0x3c], ecx
sub ebx, dword [esp + 0x24]
mov dword [esp + edi + 0x4c], eax
mov eax, esi
mov edi, dword [esp + 0x14]
sub eax, edx
mov dword [esp + 0x44], eax
mov edx, ecx
sar eax, 0x1f
lea ecx, [ebp*2]
mov dword [esp + 0x2c], eax
add ecx, ebp
shl ecx, 3
mov eax, ebx
sar eax, 0x1f
mov dword [esp + 0x28], eax
mov eax, edi
sub eax, ecx
sar edx, 0x1f
movzx edi, word [ecx + edi + 2]
mov ecx, edx
xor ecx, dword [esp + 0x3c]
sub edi, dword [esp + 0x38]
mov dword [esp + 0x40], ebx
movzx ebx, word [eax + 2]
mov eax, dword [esp + 0x28]
sub ebx, esi
xor eax, dword [esp + 0x40]
mov esi, edi
add ecx, eax
sar esi, 0x1f
mov eax, dword [esp + 0x2c]
mov ebp, ebx
xor eax, dword [esp + 0x44]
add ecx, eax
sar ebp, 0x1f
sub ecx, edx
mov eax, esi
sub ecx, dword [esp + 0x28]
xor eax, edi
sub ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x14]
lea edx, [ecx + ecx*2]
mov ecx, ebp
xor ecx, ebx
add ecx, eax
sub ecx, esi
sub ecx, ebp
lea eax, [edx + ecx*2]
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx + 0x54], eax
mov eax, dword [esp + 0x30]
inc eax
mov dword [esp + 0x30], eax
shl eax, 2
mov dword [esp + 0x10], eax
mov ebp, dword [esp + eax + 0x5c]
test ebp, ebp
jg 0x1012f360
mov ecx, dword [esp + 0x54]
xor eax, eax
cmp ecx, dword [esp + 0x58]
mov edx, edi
setg al
lea esi, [eax*4]
mov eax, dword [esp + esi + 0x5c]
mov esi, dword [esp + esi + 0x4c]
sar esi, 2
lea ecx, [eax*8]
mov eax, edx
movzx ebx, word [ecx + edx + 2]
sub eax, ecx
movzx ecx, word [eax + 2]
cmp bx, cx
jae 0x1012f49b
mov edi, ecx
mov ecx, ebx
jmp 0x1012f49d
mov edi, ebx
cmp esi, edi
mov eax, edi
cmovl eax, esi
cmp ecx, eax
jg 0x1012f4af
cmp esi, edi
mov ecx, edi
cmovl ecx, esi
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x34]
mov word [edx + 2], cx
add ebx, 2
mov ecx, dword [esp + 0x48]
movzx edx, word [ebp + 0x16]
mov dword [esp + 0x34], ebx
lea esi, [edx - 3]
cmp ebx, esi
jl 0x1012f330
mov ecx, dword [esp + 0x18]
movzx eax, word [ebp + 0x14]
inc ecx
sub eax, 3
mov dword [esp + 0x18], ecx
cmp ecx, eax
jl 0x1012f2e0
mov eax, dword [ebp + 0x83d64]
test eax, eax
je 0x1012f513
push 3
push 1
push 0x800
push dword [ebp + 0x83d68]
call eax
add esp, 0x10
test eax, eax
jne 0x1012f864
movzx eax, word [ebp + 0x14]
mov esi, 1
dec eax
mov dword [esp + 0x18], esi
cmp eax, esi
jle 0x1012f62d
nop dword [eax]
mov ebx, dword [ebp + 0x194]
mov eax, esi
and eax, 7
mov edx, ebx
lea ecx, [eax*4]
add eax, eax
shr edx, cl
and edx, 1
inc edx
mov dword [esp + 0x34], edx
lea ecx, [edx - 1]
and ecx, 1
or ecx, eax
add ecx, ecx
shr ebx, cl
movzx ecx, word [ebp + 0x16]
and ebx, 3
lea eax, [ecx - 1]
cmp edx, eax
jge 0x1012f61b
nop
mov eax, dword [ebp + 8]
lea ebp, [esp + 0x5c]
imul ecx, esi
add ecx, edx
lea edi, [eax + ecx*8]
mov eax, 1
nop dword [eax]
nop dword [eax + eax]
lea ecx, [eax*4]
lea edx, [eax*8]
lea eax, [ecx + ebx]
movzx esi, word [edi + eax*2]
mov eax, ebx
sub eax, ecx
movzx eax, word [edi + eax*2]
add esi, eax
mov eax, edi
sub eax, edx
movzx eax, word [eax + 2]
sub esi, eax
movzx eax, word [edx + edi + 2]
sub esi, eax
movzx eax, word [edi + 2]
lea eax, [esi + eax*2]
sar eax, 1
cmp eax, 0xffff
jge 0x1012f5d8
test eax, eax
jns 0x1012f5d8
xor ecx, ecx
jmp 0x1012f5e2
mov ecx, 0xffff
cmp eax, ecx
cmovl ecx, eax
add ebp, 4
mov word [edi + ebx*2], cx
mov eax, 2
sub eax, ebx
mov ebx, eax
mov eax, dword [ebp]
test eax, eax
jg 0x1012f590
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
add edx, 2
mov dword [esp + 0x34], edx
movzx ecx, word [ebp + 0x16]
lea eax, [ecx - 1]
cmp edx, eax
jl 0x1012f570
movzx eax, word [ebp + 0x14]
inc esi
dec eax
mov dword [esp + 0x18], esi
cmp esi, eax
jl 0x1012f530
mov eax, dword [ebp + 0x83d64]
test eax, eax
je 0x1012f653
push 3
push 2
push 0x800
push dword [ebp + 0x83d68]
call eax
add esp, 0x10
test eax, eax
jne 0x1012f87b
movzx eax, word [ebp + 0x14]
mov ebx, 1
dec eax
mov dword [esp + 0x18], ebx
cmp eax, ebx
jle 0x1012f845
nop dword [eax]
mov edx, dword [ebp + 0x194]
mov eax, ebx
and eax, 7
mov edi, edx
lea ecx, [eax*4]
or ecx, 2
shr edi, cl
lea ecx, [eax + eax]
and edi, 1
inc edi
mov eax, edi
mov dword [esp + 0x20], edi
and eax, 1
or ecx, eax
mov eax, 2
add ecx, ecx
shr edx, cl
movzx ecx, word [ebp + 0x16]
and edx, 3
sub eax, edx
mov dword [esp + 0x10], eax
lea eax, [ecx - 1]
cmp edi, eax
jge 0x1012f833
mov esi, dword [esp + 0x60]
mov edx, dword [esp + 0x10]
inc esi
mov dword [esp + 0x38], esi
nop dword [eax]
mov eax, dword [ebp + 8]
imul ecx, ebx
mov dword [esp + 0x30], 0
add ecx, edi
lea ebx, [eax + ecx*8]
mov dword [esp + 0x24], ebx
test esi, esi
jle 0x1012f7d2
movzx edi, word [ebx + 2]
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], 0
lea eax, [edi + edi]
mov dword [esp + 0x3c], eax
nop word [eax + eax]
mov eax, dword [esp + 0x10]
lea ecx, [esi*4]
add eax, ecx
sub edx, ecx
lea ecx, [esi*8]
movzx eax, word [ebx + eax*2]
movzx edx, word [ebx + edx*2]
mov dword [esp + 0x48], eax
mov ebp, edx
sub ebp, eax
mov dword [esp + 0x40], edx
mov eax, ebp
sar eax, 0x1f
mov dword [esp + 0x34], eax
mov eax, ebx
movzx ebx, word [ecx + ebx + 2]
sub eax, ecx
mov ecx, ebx
sub ecx, dword [esp + 0x28]
mov esi, ecx
movzx eax, word [eax + 2]
mov dword [esp + 0x44], eax
sub eax, edi
mov edi, eax
sar esi, 0x1f
sar edi, 0x1f
mov edx, edi
xor edx, eax
mov eax, dword [esp + 0x34]
xor eax, ebp
add edx, eax
mov eax, esi
xor eax, ecx
mov ecx, dword [esp + 0x2c]
add edx, eax
mov eax, dword [esp + 0x48]
sub eax, ebx
sub edx, edi
sub eax, dword [esp + 0x44]
add eax, dword [esp + 0x40]
add eax, dword [esp + 0x3c]
sub edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x24]
sub edx, esi
mov edi, dword [esp + 0x28]
mov dword [esp + ecx + 0x4c], eax
mov eax, dword [esp + 0x30]
inc eax
mov dword [esp + ecx + 0x54], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x30], eax
shl eax, 2
mov dword [esp + 0x2c], eax
mov esi, dword [esp + eax + 0x60]
add esi, dword [esp + eax + 0x5c]
test esi, esi
jg 0x1012f710
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x54]
cmp esi, ecx
je 0x1012f7ed
xor eax, eax
cmp esi, ecx
setg al
mov eax, dword [esp + eax*4 + 0x4c]
sar eax, 1
jmp 0x1012f7f8
mov eax, dword [esp + 0x4c]
add eax, dword [esp + 0x50]
sar eax, 2
cmp eax, 0xffff
jge 0x1012f807
test eax, eax
jns 0x1012f807
xor ecx, ecx
jmp 0x1012f811
mov ecx, 0xffff
cmp eax, ecx
cmovl ecx, eax
mov esi, dword [esp + 0x38]
add edi, 2
mov word [ebx + edx*2], cx
movzx ecx, word [ebp + 0x16]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x20], edi
lea eax, [ecx - 1]
cmp edi, eax
jl 0x1012f6d0
movzx eax, word [ebp + 0x14]
inc ebx
dec eax
mov dword [esp + 0x18], ebx
cmp ebx, eax
jl 0x1012f670
pop edi
pop esi
pop ebx
pop ebp
add esp, 0x60
ret
push 0x10404af8
lea eax, [esp + 0x2c]
mov dword [esp + 0x2c], 6
push eax
call fcn.1026eb3b
push 0x10404af8
lea eax, [esp + 0x4c]
mov dword [esp + 0x4c], 6
push eax
call fcn.1026eb3b
push 0x10404af8
lea eax, [esp + 0x4c]
mov dword [esp + 0x4c], 6
push eax
call fcn.1026eb3b
int3