Function at 0x4125a7
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x98
mov eax, dword [0x44d0b4]
xor eax, ebp
mov dword [ebp - 4], eax
cmp dword [ebx + 0xc], 2
mov eax, ecx
mov ecx, dword [ebx + 0x10]
lea edx, [eax + 8]
mov dword [ebp - 0x84], ecx
setne ch
cmp dword [ebx + 0xc], 1
push esi
mov dword [ebp - 0x8c], eax
sete cl
mov eax, dword [edx]
push edi
mov edi, dword [edx + 4]
mov dword [ebp - 0x90], edx
mov edx, eax
mov dword [ebp - 0x88], edi
mov esi, edx
mov dword [ebp - 0x78], edx
shr esi, 0xc
dec esi
shl esi, 0xc
xor esi, edx
and esi, 0x7f000
xor esi, edx
mov eax, esi
shr eax, 0x1e
and al, 1
or cl, al
or ch, al
mov byte [ebp - 0x6a], cl
mov byte [ebp - 0x6c], ch
jne 0x41269b
test edi, edi
je 0x41269b
lea eax, [esi - 1]
mov byte [ebp - 0x6d], 0
xor eax, esi
and eax, 0xfff
xor eax, esi
mov esi, eax
shr esi, 0x13
dec esi
shl esi, 0x13
xor esi, eax
and esi, 0x3ff80000
xor esi, eax
mov eax, esi
sub edi, 1
je 0x412666
and eax, 0x7f000
jne 0x41266b
mov cl, 1
jmp 0x41266d
and eax, 0x7f000
xor cl, cl
mov byte [ebp - 0x69], cl
test esi, 0x3ff80000
jne 0x412695
test esi, esi
js 0x412680
test eax, eax
je 0x412695
lea eax, [esi + 0x80000]
mov byte [ebp - 0x6b], 1
xor eax, esi
and eax, 0x3ff80000
xor esi, eax
jmp 0x4126f0
mov byte [ebp - 0x6b], 0
jmp 0x4126f0
mov byte [ebp - 0x6d], 1
mov byte [ebp - 0x69], 0
mov byte [ebp - 0x6b], 0
test ch, ch
je 0x412722
mov ecx, esi
shr ecx, 0x13
dec ecx
shl ecx, 0x13
xor ecx, esi
and ecx, 0x3ff80000
xor ecx, esi
mov esi, ecx
test ecx, 0x7f000
jne 0x412722
cmp byte [ebp - 0x6a], 0
je 0x412705
mov eax, ecx
shr ecx, 0x13
shl eax, 0x14
and ecx, 0x7ff
sar eax, 0x14
sub ecx, eax
mov eax, dword [ebp - 0x8c]
add ecx, dword [eax + 0x54]
setne cl
mov byte [ebp - 0x69], cl
test cl, cl
je 0x412722
lea eax, [esi + 0x1000]
xor eax, esi
and eax, 0x7f000
xor esi, eax
jmp 0x412722
test edi, edi
je 0x41271e
lea eax, [esi + 0x1000]
mov byte [ebp - 0x69], 1
xor eax, esi
and eax, 0x7f000
xor esi, eax
jmp 0x412722
mov byte [ebp - 0x69], 0
mov eax, edx
mov ecx, edi
mov edx, dword [ebp - 0x88]
mov edi, dword [ebp - 0x90]
push ebx
mov ebx, esi
lock cmpxchg8b qword [edi]
mov esi, ebx
pop ebx
mov edi, edx
cmp eax, dword [ebp - 0x78]
jne 0x41274b
cmp edi, dword [ebp - 0x88]
je 0x412756
mov cl, byte [ebp - 0x6a]
mov ch, byte [ebp - 0x6c]
jmp 0x4125fc
cmp byte [ebp - 0x6b], 0
je 0x41276f
mov ecx, dword [ebp - 0x8c]
push dword [ebp - 0x84]
push 1
mov eax, dword [ecx]
call dword [eax + 8]
cmp byte [ebp - 0x69], 0
je 0x412901
xor eax, eax
cmp byte [ebp - 0x6a], al
sete al
inc eax
mov dword [ebp - 0x88], eax
call dword [0x4411d4]
test byte [0x44e780], 0x10
mov edi, eax
mov esi, dword [ebp - 0x88]
je 0x4127f1
lea eax, [ebp - 0x78]
mov dword [ebp - 0x80], edi
mov dword [ebp - 0x28], eax
mov edx, 0x442670
lea eax, [ebp - 0x80]
mov dword [ebp - 0x78], esi
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x38]
push eax
push 3
push ecx
mov ecx, 0x44d0c8
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 4
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 4
mov dword [ebp - 0xc], 0
call fcn.0040b143
mov eax, dword [ebp - 0x8c]
push 0
push esi
push edi
push dword [eax + 0x50]
call dword [0x441218]
test eax, eax
je 0x412821
mov ecx, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x84]
push esi
push 0
mov eax, dword [ecx]
call dword [eax + 8]
jmp 0x412907
test byte [0x44e780], 0x20
je 0x41287c
lea eax, [ebp - 0x80]
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x58], eax
mov edx, 0x4425a8
lea eax, [ebp - 0x78]
mov dword [ebp - 0x80], esi
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x68]
push eax
push 3
push ecx
mov ecx, 0x44d0c8
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], 4
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 4
mov dword [ebp - 0x3c], 0
call fcn.0040b143
mov ecx, 0x1c135e
call fcn.00419dd2
mov eax, dword [ebp - 0x90]
mov edi, dword [eax]
mov esi, edi
mov ecx, dword [eax + 4]
mov eax, edi
shr esi, 0xc
mov edx, ecx
dec esi
mov dword [ebp - 0x80], edi
shl esi, 0xc
xor esi, edi
mov dword [ebp - 0x78], ecx
and esi, 0x7f000
xor esi, edi
mov edi, dword [ebp - 0x90]
push ebx
mov ebx, esi
lock cmpxchg8b qword [edi]
mov esi, ebx
pop ebx
mov ecx, edx
cmp eax, dword [ebp - 0x80]
jne 0x4128ca
cmp ecx, dword [ebp - 0x78]
je 0x412901
mov edi, dword [ebp - 0x90]
mov esi, eax
shr esi, 0xc
mov edx, ecx
dec esi
mov dword [ebp - 0x80], eax
shl esi, 0xc
xor esi, eax
mov dword [ebp - 0x78], ecx
and esi, 0x7f000
xor esi, eax
push ebx
mov ebx, esi
lock cmpxchg8b qword [edi]
mov esi, ebx
pop ebx
mov ecx, edx
cmp eax, dword [ebp - 0x80]
jne 0x4128ca
cmp ecx, dword [ebp - 0x78]
jne 0x4128ca
mov esi, dword [ebp - 0x84]
cmp byte [ebp - 0x6c], 0
je 0x412933
cmp dword [ebx + 0xc], 3
jne 0x41291f
mov eax, dword [ebx + 8]
mov dword [esi], eax
mov eax, 3
jmp 0x41293c
cmp byte [ebp - 0x6a], 0
jne 0x41292f
mov ecx, 0x1c1394
call fcn.00419dd2
xor eax, eax
jmp 0x41293c
xor eax, eax
cmp byte [ebp - 0x6d], al
sete al
inc eax
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.0043cfac
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0xc