Function at 0x6ac4e710
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, eax
push esi
push ebx
sub esp, 0x6c
fld xword [ebp + 8]
fld st(0)
fstp xword [ebp - 0x40]
fxam
wait
fnstsw ax
and ax, 0x4500
cmp ax, 0x100
je 0x6ac4ec65
movzx edx, word [ebp - 0x38]
mov ebx, edx
and ebx, 0x8000
jne 0x6ac4e890
fxam
wait
fnstsw ax
fstp st(0)
and ax, 0x4500
cmp ax, 0x500
je 0x6ac4ec83
and dx, 0x7fff
je 0x6ac4e920
lea esi, [edx - 0x3fff]
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x3c]
mov ebx, dword [edi + 0xc]
cmp ebx, 0xe
jbe 0x6ac4e8a6
mov ecx, edx
or ecx, eax
je 0x6ac4ec96
lea ecx, [ebp - 0x2a]
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x58], edi
jmp 0x6ac4e7f6
mov ecx, dword [ebp - 0x58]
mov ecx, dword [ecx + 0xc]
test ecx, ecx
jle 0x6ac4e7ab
mov ebx, dword [ebp - 0x58]
sub ecx, 1
mov dword [ebx + 0xc], ecx
mov ecx, dword [ebp - 0x54]
shrd eax, edx, 4
shr edx, 4
test edi, edi
mov dword [ebp - 0x50], ecx
je 0x6ac4e868
mov ecx, dword [ebp - 0x50]
add ecx, 1
cmp edi, 9
mov dword [ebp - 0x54], ecx
jle 0x6ac4e887
lea ecx, [edi + 0x37]
mov edi, dword [ebp - 0x58]
mov edi, dword [edi + 4]
mov dword [ebp - 0x60], edi
movzx ebx, byte [ebp - 0x60]
and ebx, 0x20
or ecx, ebx
mov edi, dword [ebp - 0x50]
mov byte [edi], cl
mov edi, edx
or edi, eax
je 0x6ac4e956
mov edi, eax
mov ecx, eax
and edi, 0xf
mov ebx, edi
xor ecx, edi
sar ebx, 0x1f
xor ebx, edx
or ebx, ecx
jne 0x6ac4e798
mov ecx, dword [ebp - 0x5c]
cmp dword [ebp - 0x54], ecx
ja 0x6ac4e830
mov ecx, dword [ebp - 0x58]
test byte [ecx + 5], 8
jne 0x6ac4e830
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x58]
mov ebx, dword [ecx + 0xc]
test ebx, ebx
jle 0x6ac4e83c
nop
lea esi, [esi]
mov ecx, dword [ebp - 0x54]
lea ebx, [ecx + 1]
mov dword [ebp - 0x50], ebx
mov byte [ecx], 0x2e
mov ecx, eax
xor ecx, 1
or ecx, edx
je 0x6ac4e85c
lea ecx, [esi - 1]
shrd eax, edx, 1
mov esi, ecx
mov ebx, eax
shr edx, 1
xor ebx, 1
or ebx, edx
lea ecx, [esi - 1]
jne 0x6ac4e848
xor eax, eax
xor edx, edx
test edi, edi
jne 0x6ac4e7c0
mov ecx, dword [ebp - 0x5c]
cmp dword [ebp - 0x50], ecx
ja 0x6ac4e87e
mov ecx, dword [ebp - 0x58]
mov ecx, dword [ecx + 0xc]
test ecx, ecx
js 0x6ac4ea40
mov ecx, dword [ebp - 0x50]
add ecx, 1
mov dword [ebp - 0x54], ecx
lea ecx, [edi + 0x30]
jmp 0x6ac4e7e7
or dword [edi + 4], 0x80
jmp 0x6ac4e748
shld edx, eax, 1
add eax, eax
test edx, edx
jns 0x6ac4e8a0
mov ecx, 0xe
shrd eax, edx, 1
sub ecx, ebx
shr edx, 1
shl ecx, 2
mov dword [ebp - 0x50], eax
mov eax, 4
mov dword [ebp - 0x4c], edx
xor edx, edx
shld edx, eax, cl
shl eax, cl
test cl, 0x20
je 0x6ac4e8d5
mov edx, eax
xor eax, eax
add dword [ebp - 0x50], eax
adc dword [ebp - 0x4c], edx
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x50]
test edx, edx
js 0x6ac4ec5d
shld edx, eax, 1
add eax, eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], edx
mov edx, dword [ebp - 0x4c]
mov ecx, 0xf
mov eax, dword [ebp - 0x50]
sub ecx, ebx
xor ebx, ebx
shl ecx, 2
shrd eax, edx, cl
shr edx, cl
and ecx, 0x20
cmovne eax, edx
cmovne edx, ebx
jmp 0x6ac4e78a
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
mov esi, edx
or esi, eax
je 0x6ac4ec17
test edx, edx
js 0x6ac4eccc
mov ecx, 0xffffc001
lea esi, [esi]
shld edx, eax, 1
mov ebx, ecx
add eax, eax
sub ecx, 1
test edx, edx
jns 0x6ac4e940
mov esi, ebx
jmp 0x6ac4e774
mov eax, dword [ebp - 0x5c]
cmp dword [ebp - 0x54], eax
mov edi, dword [ebp - 0x58]
je 0x6ac4ecc7
mov eax, dword [edi + 4]
mov dword [ebp - 0x50], eax
mov eax, dword [edi + 8]
test eax, eax
mov dword [ebp - 0x58], eax
jle 0x6ac4ec05
mov edx, dword [edi + 0xc]
movsx esi, si
mov eax, dword [ebp - 0x54]
mov ebx, esi
sub eax, dword [ebp - 0x5c]
mov dword [ebp - 0x64], ebx
test edx, edx
lea ecx, [eax + edx]
mov edx, dword [ebp - 0x50]
cmovg eax, ecx
and edx, 0x1c0
cmp edx, 1
sbb edx, edx
lea esi, [eax + edx + 6]
mov eax, ebx
mov edx, 0x66666667
imul edx
mov eax, ebx
sar eax, 0x1f
sar edx, 2
sub edx, eax
mov ecx, edx
je 0x6ac4ecbb
mov ebx, 2
mov eax, 0x66666667
add esi, 1
imul ecx
add ebx, 1
sar ecx, 0x1f
sar edx, 2
sub edx, ecx
mov ecx, edx
jne 0x6ac4e9c4
movsx eax, bx
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x58], esi
jle 0x6ac4ea50
mov eax, dword [ebp - 0x58]
sub eax, esi
test dword [ebp - 0x50], 0x600
jne 0x6ac4ec22
lea edx, [eax - 1]
test eax, eax
mov dword [edi + 8], edx
jle 0x6ac4ea57
mov edx, edi
mov eax, 0x20
call fcn.6ac4d890
mov eax, dword [edi + 8]
lea edx, [eax - 1]
test eax, eax
mov dword [edi + 8], edx
jg 0x6ac4ea04
mov eax, dword [edi + 4]
mov dword [ebp - 0x50], eax
test byte [ebp - 0x50], 0x80
je 0x6ac4ea5d
lea esi, [esi]
mov edx, edi
mov eax, 0x2d
call fcn.6ac4d890
jmp 0x6ac4ea74
mov edi, dword [ebp - 0x50]
mov dword [ebp - 0x54], edi
jmp 0x6ac4e7ec
mov dword [edi + 8], 0xffffffff
test byte [ebp - 0x50], 0x80
jne 0x6ac4ea30
test dword [ebp - 0x50], 0x100
jne 0x6ac4ec2a
test byte [ebp - 0x50], 0x40
jne 0x6ac4ec4c
mov edx, edi
mov eax, 0x30
call fcn.6ac4d890
mov eax, dword [edi + 4]
mov edx, edi
and eax, 0x20
or eax, 0x58
call fcn.6ac4d890
mov eax, dword [edi + 8]
test eax, eax
jle 0x6ac4eabc
test byte [edi + 5], 2
je 0x6ac4eabc
sub eax, 1
mov dword [edi + 8], eax
mov edx, edi
mov eax, 0x30
call fcn.6ac4d890
mov eax, dword [edi + 8]
lea edx, [eax - 1]
test eax, eax
mov dword [edi + 8], edx
jg 0x6ac4eaa3
mov eax, dword [ebp - 0x5c]
cmp dword [ebp - 0x54], eax
mov ebx, dword [ebp - 0x54]
ja 0x6ac4eae0
jmp 0x6ac4eb6d
mov edx, edi
call fcn.6ac4d890
cmp ebx, dword [ebp - 0x5c]
je 0x6ac4eb6d
sub ebx, 1
movsx eax, byte [ebx]
cmp eax, 0x2e
jne 0x6ac4ead0
cmp dword [edi + 0x10], 0xfffffffd
je 0x6ac4ebc1
movzx edx, word [edi + 0x14]
test dx, dx
je 0x6ac4ebb0
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x50], esp
add eax, 0xf
and eax, 0xfffffff0
call fcn.6ac52550
sub esp, eax
lea esi, [esp + 0x10]
lea eax, [ebp - 0x44]
mov dword [ebp - 0x44], 0
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], esi
call fcn.6ac50b70
test eax, eax
jle 0x6ac4ec3b
add eax, esi
mov dword [ebp - 0x54], ebx
mov ebx, esi
mov esi, eax
add ebx, 1
movsx eax, byte [ebx - 1]
mov edx, edi
call fcn.6ac4d890
cmp ebx, esi
jne 0x6ac4eb44
mov ebx, dword [ebp - 0x54]
mov esp, dword [ebp - 0x50]
jmp 0x6ac4ead7
mov edx, edi
mov eax, 0x30
call fcn.6ac4d890
mov eax, dword [edi + 0xc]
lea edx, [eax - 1]
test eax, eax
mov dword [edi + 0xc], edx
jg 0x6ac4eb61
mov eax, dword [edi + 4]
mov edx, edi
and eax, 0x20
or eax, 0x50
call fcn.6ac4d890
mov eax, dword [ebp - 0x60]
mov ecx, edi
add dword [edi + 8], eax
mov eax, dword [ebp - 0x64]
or dword [edi + 4], 0x1c0
cdq
call fcn.6ac4db10
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, edi
mov eax, 0x2e
call fcn.6ac4d890
jmp 0x6ac4ead7
mov dword [ebp - 0x44], 0
lea esi, [ebp - 0x44]
call sub.msvcrt.dll_localeconv
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0x10
mov eax, dword [eax]
mov dword [esp + 4], eax
lea eax, [ebp - 0x46]
mov dword [esp], eax
call fcn.6ac50ec0
test eax, eax
jle 0x6ac4ec7a
movzx edx, word [ebp - 0x46]
mov word [edi + 0x14], dx
mov dword [edi + 0x10], eax
jmp 0x6ac4eaf9
movsx eax, si
mov dword [ebp - 0x60], 2
mov dword [ebp - 0x64], eax
jmp 0x6ac4ea57
xor esi, esi
xor eax, eax
xor edx, edx
jmp 0x6ac4e774
mov dword [edi + 8], eax
jmp 0x6ac4ea57
mov edx, edi
mov eax, 0x2b
call fcn.6ac4d890
jmp 0x6ac4ea74
mov edx, edi
mov eax, 0x2e
call fcn.6ac4d890
jmp 0x6ac4eb59
mov edx, edi
mov eax, 0x20
call fcn.6ac4d890
jmp 0x6ac4ea74
add esi, 1
jmp 0x6ac4e8f5
fstp st(0)
mov ecx, edi
mov edx, 0x6ac54d3c
xor eax, eax
call fcn.6ac4da80
jmp 0x6ac4eba2
movzx edx, word [edi + 0x14]
jmp 0x6ac4ebfd
mov ecx, edi
mov edx, 0x6ac54d40
mov eax, ebx
call fcn.6ac4da80
jmp 0x6ac4eba2
lea eax, [ebp - 0x2a]
mov dword [ebp - 0x5c], eax
test ebx, ebx
mov eax, dword [edi + 4]
jle 0x6ac4ecd6
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x2a], 0x2e
lea eax, [ebp - 0x29]
lea edx, [eax + 1]
mov dword [ebp - 0x54], edx
mov byte [eax], 0x30
jmp 0x6ac4e96b
mov dword [ebp - 0x60], 2
jmp 0x6ac4e9e3
mov ebx, dword [edi + 0xc]
jmp 0x6ac4ec9c
mov esi, 0xffffc002
jmp 0x6ac4e774
mov edx, eax
and dh, 8
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x5c]
je 0x6ac4ecad
jmp 0x6ac4eca6