Function at 0x100479f5
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x30], ecx
mov esi, dword [ebp + 0x18]
mov edx, dword [0x10072084]
mov eax, dword [0x10072080]
mov ebx, eax
add ebx, 1
mov ecx, edx
adc ecx, 0
lock cmpxchg8b qword [0x10072080]
jne 0x10047a12
mov dword [ebp - 0x2c], edx
mov edx, dword [esi]
mov edi, dword [esi + 4]
mov ecx, edx
add ecx, 0x2a05f200
mov esi, edi
adc esi, 1
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x24], edi
or edx, edi
mov edx, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
je 0x10047a6e
cmp ecx, ebx
sbb esi, edx
jb 0x10047a6e
cmp ebx, dword [ebp - 0x20]
mov ecx, edx
sbb ecx, dword [ebp - 0x24]
jb 0x10047a6e
mov esi, dword [ebp + 0x18]
mov ecx, dword [esi + 0x10]
mov edi, dword [esi + 0x14]
cmp dword [ebp - 0x30], ecx
mov esi, dword [ebp - 0x34]
sbb esi, edi
jae 0x10047ae9
movd xmm0, ebx
movd xmm1, edx
punpckldq xmm0, xmm1
movq qword [0x10072088], xmm0
movq qword [0x10072090], xmm0
movd xmm0, dword [ebp - 0x30]
movd xmm1, dword [ebp - 0x34]
punpckldq xmm0, xmm1
movq qword [0x10072098], xmm0
pxor xmm0, xmm0
movq qword [0x100720a0], xmm0
movq qword [0x100720a8], xmm0
add dword [0x100720b0], 1
adc dword [0x100720b4], 0
mov ecx, dword [ebp - 0x2c]
add eax, 2
adc ecx, 0
movd xmm0, ecx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [0x10072080], xmm1
mov eax, ebx
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, dword [ebp - 0x20]
add ebx, 0x1dcd6500
mov esi, dword [ebp - 0x24]
adc esi, 0
add ecx, 0x32
adc edi, 0
cmp ebx, dword [ebp + 8]
mov ebx, dword [ebp + 8]
sbb esi, edx
jae 0x10047c6f
cmp ecx, dword [ebp - 0x30]
sbb edi, dword [ebp - 0x34]
jae 0x10047c6f
mov dword [ebp - 0x40], eax
mov eax, dword [ebp + 0x18]
mov esi, dword [eax + 0x18]
mov edi, dword [eax + 0x1c]
mov eax, esi
or eax, edi
mov eax, ebx
mov ecx, edx
je 0x10047bb7
xor ecx, ecx
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x10], edi
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebp + 0x14]
shrd ebx, esi, cl
shr esi, cl
test cl, 0x20
cmovne ebx, esi
mov eax, 0
cmovne esi, eax
mov eax, esi
mul dword [ebp - 0x14]
mov dword [ebp - 0x28], eax
seto byte [ebp - 0x1c]
mov eax, dword [ebp - 0x10]
mul ebx
mov edi, eax
seto byte [ebp - 0x18]
add edi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x14]
mul ebx
add edi, edx
setb dh
test esi, esi
setne dl
cmp dword [ebp - 0x10], 0
setne bl
and bl, dl
or bl, byte [ebp - 0x18]
or bl, byte [ebp - 0x1c]
or bl, dh
inc ecx
test bl, bl
jne 0x10047b3a
mov dl, 0x1f
sub dl, cl
mov ecx, edx
shrd eax, edi, cl
shr edi, cl
xor ecx, ecx
test dl, 0x20
cmovne eax, edi
cmove ecx, edi
mov edx, dword [ebp + 0x18]
add eax, dword [edx + 8]
adc ecx, dword [edx + 0xc]
mov edx, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x3c], eax
sub ebx, dword [ebp - 0x20]
mov dword [ebp - 0x10], ebx
sbb edx, dword [ebp - 0x24]
mov dword [ebp - 0x1c], edx
xor ecx, ecx
mov dword [ebp - 0x14], ecx
mov eax, dword [ebp - 0x14]
mov ecx, eax
add cl, 0x1e
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x10]
shld esi, eax, cl
shl eax, cl
test cl, 0x20
cmovne esi, eax
mov edx, esi
shr edx, cl
test cl, 0x20
mov ebx, 0
cmovne eax, ebx
mov edi, edx
cmovne edi, ebx
mov ebx, eax
shrd ebx, esi, cl
test cl, 0x20
mov ecx, dword [ebp - 0x14]
cmovne ebx, edx
xor ebx, dword [ebp - 0x10]
xor edi, dword [ebp - 0x1c]
dec ecx
or edi, ebx
jne 0x10047bcb
not cl
mov edx, dword [ebp + 0x10]
mov edi, dword [ebp + 0x14]
shrd edx, edi, cl
shr edi, cl
xor ebx, ebx
test cl, 0x20
cmovne edx, edi
cmovne edi, ebx
mov ecx, edx
or ecx, edi
je 0x10047c82
cmp eax, edx
mov ecx, esi
sbb ecx, edi
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x28], 0
mov ecx, edi
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
jb 0x10047c96
push ecx
push edx
push esi
push eax
call fcn.10045b60
push edx
push eax
push 0x1f400000
push 0
call fcn.10045b60
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x28], edx
jmp 0x10047c96
add dword [0x100720c8], 1
adc dword [0x100720cc], 0
jmp 0x10047ac2
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x28], 0
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
sub ebx, dword [ebp - 0x3c]
sbb edi, dword [ebp - 0x38]
mov eax, edi
sar eax, 0x1f
shr eax, 0x1c
add eax, ebx
mov ecx, edi
adc ecx, 0
shrd eax, ecx, 4
sar ecx, 4
mov dword [ebp - 0x20], ebx
sub ebx, eax
mov dword [ebp - 0x24], edi
sbb edi, ecx
add ebx, 0x7d000000
mov dword [ebp - 0x10], ebx
adc edi, 0
mov dword [ebp - 0x1c], edi
xor ecx, ecx
mov dword [ebp - 0x14], ecx
mov eax, dword [ebp - 0x14]
mov ecx, eax
add cl, 0x1e
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x10]
shld esi, edi, cl
shl edi, cl
test cl, 0x20
cmovne esi, edi
mov eax, esi
shr eax, cl
test cl, 0x20
mov ebx, 0
cmovne edi, ebx
mov edx, eax
cmovne edx, ebx
mov ebx, edi
shrd ebx, esi, cl
test cl, 0x20
mov ecx, dword [ebp - 0x14]
cmovne ebx, eax
xor ebx, dword [ebp - 0x10]
xor edx, dword [ebp - 0x1c]
dec ecx
or edx, ebx
jne 0x10047ccd
not cl
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x28]
shrd edx, eax, cl
shr eax, cl
xor ebx, ebx
test cl, 0x20
cmovne edx, eax
cmove ebx, eax
mov eax, edx
or eax, ebx
je 0x10047dbc
push ebx
push edx
push esi
push edi
mov dword [ebp - 0x18], edx
call fcn.10045b60
cmp edi, dword [ebp - 0x18]
sbb esi, ebx
jb 0x10047dbc
xor ecx, ecx
mov esi, 0x5f5e0ff
cmp esi, dword [ebp - 0x20]
sbb ecx, dword [ebp - 0x24]
jl 0x10047dbc
cmp dword [ebp - 0x20], 0xfa0a1f01
sbb dword [ebp - 0x24], 0xffffffff
jl 0x10047dbc
movd xmm0, eax
movd xmm1, edx
punpckldq xmm0, xmm1
movq qword [0x100720a0], xmm0
push edx
push eax
push 0x1f400000
push 0
call fcn.10045b60
movd xmm0, edx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [0x100720a8], xmm1
add dword [0x100720c0], 1
adc dword [0x100720c4], 0
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov ebx, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x38]
jmp 0x10047deb
pxor xmm0, xmm0
movq qword [0x100720a0], xmm0
movq qword [0x100720a8], xmm0
add dword [0x100720b8], 1
adc dword [0x100720bc], 0
mov edx, dword [ebp + 8]
mov ebx, edx
mov eax, dword [ebp + 0xc]
mov esi, eax
mov ecx, dword [ebp - 0x2c]
movd xmm0, edx
movd xmm1, eax
movss xmm2, dword [ebp - 0x30]
movss xmm3, dword [ebp - 0x34]
punpckldq xmm0, xmm1
movq qword [0x10072088], xmm0
movd xmm0, ebx
movd xmm1, esi
punpckldq xmm0, xmm1
movq qword [0x10072090], xmm0
unpcklps xmm2, xmm3
movlps qword [0x10072098], xmm2
mov edx, esi
mov eax, dword [ebp - 0x40]
jmp 0x10047ac5