Function at 0x43cb60
Capabilities:
Encode data using xor

Disassembly:
push ecx
movzx eax, byte [0x54e52a]
push esi
push edi
mov edi, ecx
cmp dword [eax*4 + 0x54ed40], 0
jne 0x4394ee
mov dword [0x4edf3c], 0
mov dword [0x4edf40], 0
pop edi
pop esi
pop ecx
ret
xor ecx, ecx
test edx, edx
cmovns ecx, edx
call fcn.00437a80
xor ecx, ecx
mov esi, eax
test edi, edi
cmovns ecx, edi
call fcn.00437a80
pop edi
mov dword [0x4edf40], esi
mov dword [0x4edf3c], eax
pop esi
pop ecx
ret
mov al, byte [0x54e52a]
sub esp, 0x14
push ebx
push ebp
push esi
push edi
test al, al
je 0x43cb4e
movzx eax, al
mov edx, dword [eax*4 + 0x54ed40]
test edx, edx
je 0x43cb4e
movzx eax, byte [0x54e52c]
imul edi, eax, 0xd8
add edi, 0xdc
add edi, edx
je 0x43cb4e
cmp dword [edi + 0x1c], 0
je 0x43cb4e
mov esi, dword [edi + 0x28]
test esi, esi
jle 0x43cb4e
mov ebx, dword [0x550b80]
mov eax, 0x278
mov edx, dword [0x550b84]
cmp ebx, eax
mov dword [esp + 0x14], edx
cmovg ebx, eax
mov dword [esp + 0x20], ebx
test cl, cl
jne 0x43c95c
call fcn.004022a0
mov ecx, edi
call fcn.004377f0
mov ecx, ebx
mov byte [0x54e4ef], 1
call fcn.00437a80
mov ecx, dword [esp + 0x14]
mov ebp, eax
call fcn.0043c860
mov ecx, dword [esp + 0x14]
mov ebx, eax
mov esi, dword [edi + 0x28]
mov dword [esp + 0x18], ebp
jmp 0x43c9a1
cmp ebx, dword [0x5375dc]
jne 0x43c984
mov ecx, dword [0x537730]
cmp edx, ecx
je 0x43cb4e
mov ebp, dword [0x5376ec]
mov ebx, dword [0x5376d8]
mov dword [esp + 0x18], ebp
jmp 0x43c9a1
mov ecx, ebx
call fcn.00437a80
mov ebp, dword [0x5376ec]
mov ebx, dword [0x5376d8]
mov ecx, dword [0x537730]
mov dword [esp + 0x18], eax
cmp byte [0x552487], 0
mov eax, esi
jne 0x43c9c7
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
cmp eax, ecx
je 0x43c9c3
mov ecx, eax
call fcn.0043c860
mov edx, eax
jmp 0x43c9cb
mov eax, dword [esp + 0x1c]
mov edx, ebx
mov esi, eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
mov dword [0x5375dc], eax
mov eax, dword [esp + 0x14]
mov dword [0x537730], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
cmp ecx, ebp
jle 0x43c9f9
mov eax, ecx
mov ecx, ebp
mov ebp, eax
mov eax, ebx
mov ebx, edx
mov edx, eax
test byte [edi + 0x25], 0x10
mov eax, dword [edi + 0x1c]
mov dword [esp + 0x14], eax
lea eax, [ebp + 1]
je 0x43caab
xor edi, edi
test ecx, ecx
cmovns edi, ecx
cmp eax, esi
cmovle esi, eax
cmp ecx, ebp
jne 0x43ca52
xor edx, 0xffffff80
shl edx, 8
movzx eax, dx
cmp edi, esi
jge 0x43cb2e
sub esi, edi
mov edx, eax
lea edi, [edi*2]
shl edx, 0x10
add edi, dword [esp + 0x14]
or eax, edx
mov ecx, esi
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
jmp 0x43cb2e
sub ebx, edx
sub ebp, ecx
je 0x43cb2e
movsd xmm1, qword [0x4e2a80]
movd xmm0, ebp
cvtdq2pd xmm0, xmm0
divsd xmm1, xmm0
cmp edi, esi
jge 0x43cb2e
mov ebp, dword [esp + 0x14]
xor ecx, ecx
nop
movd xmm0, ecx
add ecx, ebx
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
cvttsd2si eax, xmm0
add eax, edx
shl eax, 8
xor eax, 0xffff8000
mov word [ebp + edi*2], ax
inc edi
cmp edi, esi
jl 0x43ca80
jmp 0x43cb2e
xor edi, edi
test ecx, ecx
cmovns edi, ecx
cmp eax, esi
cmovle esi, eax
cmp ecx, ebp
jne 0x43cae3
xor dl, 0x80
cmp edi, esi
jge 0x43cb2e
sub esi, edi
mov al, dl
add edi, dword [esp + 0x14]
mov ecx, esi
movzx eax, al
imul eax, eax, 0x1010101
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
jmp 0x43cb2e
sub ebx, edx
sub ebp, ecx
je 0x43cb2e
movsd xmm1, qword [0x4e2a80]
movd xmm0, ebp
cvtdq2pd xmm0, xmm0
divsd xmm1, xmm0
cmp edi, esi
jge 0x43cb2e
mov ebp, dword [esp + 0x14]
xor ecx, ecx
nop word [eax + eax]
movd xmm0, ecx
add ecx, ebx
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
cvttsd2si eax, xmm0
add al, dl
xor al, 0x80
mov byte [edi + ebp], al
inc edi
cmp edi, esi
jl 0x43cb10
mov eax, dword [esp + 0x20]
mov cl, 1
mov dword [0x5376d8], eax
mov eax, dword [esp + 0x1c]
mov dword [0x5376ec], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
jmp fcn.004392b0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov dl, byte [0x54e52a]
push ebx
mov bl, cl
push esi
push edi
test dl, dl
je 0x43cc62
mov ecx, dword [0x550b80]
cmp ecx, 0x280
jle 0x43cb88
mov ecx, 0x280
jmp 0x43cb8f
xor eax, eax
test ecx, ecx
cmovs ecx, eax
mov eax, dword [0x550b84]
cmp eax, 0x18f
jle 0x43cba2
mov eax, 0x18f
jmp 0x43cba9
xor esi, esi
test eax, eax
cmovs eax, esi
test bl, bl
jne 0x43cd04
mov edx, 9
mov word [0x54e63e], 0
mov dword [0x54e648], 0xffffffff
mov dword [0x535c2c], 0
mov dword [0x5375dc], ecx
mov dword [0x537730], eax
mov word [0x550b6c], dx
cmp byte [0x550b61], bl
je 0x43cce3
cmp eax, 0xb7
jge 0x43cc66
movsx edx, word [0x53a6de]
cmp ecx, edx
jl 0x43ccd3
lea eax, [edx + 0x10]
cmp ecx, eax
jg 0x43ccd3
mov eax, dword [0x552bd8]
sub edx, ecx
movzx ecx, word [0x53a6e2]
add eax, 0x9a0
mov dword [0x53a6d4], eax
add edx, 8
movzx eax, word [0x53a6e4]
imul ecx, eax
mov dword [0x535c2c], edx
mov dword [0x54e648], 1
shl ecx, 2
push ecx
push 0
push dword [0x53a6d0]
call fcn.00484320
add esp, 0xc
mov byte [0x54e63e], 1
pop edi
pop esi
pop ebx
ret
cmp eax, 0x13e
jle 0x43ccd3
movsx edx, word [0x53a6f6]
cmp ecx, edx
jl 0x43ccd3
lea eax, [edx + 0x10]
cmp ecx, eax
jg 0x43ccd3
mov eax, dword [0x552bd8]
sub edx, ecx
movzx ecx, word [0x53a6fa]
add eax, 0x1ce0
mov dword [0x53a6ec], eax
add edx, 8
movzx eax, word [0x53a6fc]
imul ecx, eax
mov dword [0x535c2c], edx
mov dword [0x54e648], 1
shl ecx, 2
push ecx
push 0
push dword [0x53a6e8]
call fcn.00484320
add esp, 0xc
mov byte [0x54e63f], 1
pop edi
pop esi
pop ebx
ret
mov dword [0x54e648], ecx
mov edx, ecx
pop edi
pop esi
pop ebx
jmp 0x4394c0
cmp byte [0x550b62], 0
je 0x43cc62
mov dword [0x54e648], 1
xor cl, cl
pop edi
pop esi
pop ebx
jmp 0x43c8b0
cmp byte [0x550b62], 0
je 0x43cd17
mov cl, 1
pop edi
pop esi
pop ebx
jmp 0x43c8b0
cmp ecx, dword [0x5375dc]
je 0x43cc62
cmp byte [0x550b61], 0
je 0x43cc62
cmp byte [0x54e63e], 0
je 0x43cdce
mov esi, dword [0x535c2c]
movzx eax, dl
add esi, ecx
mov dword [0x5375dc], ecx
mov ecx, dword [eax*4 + 0x54ed40]
test ecx, ecx
je 0x43cc62
movzx eax, byte [0x54e52c]
imul eax, eax, 0xd8
add eax, 0xdc
add eax, ecx
je 0x43cc62
cmp dword [eax + 0x1c], 0
je 0x43cc62
cmp dword [eax + 0x28], 0
jle 0x43cc62
mov ecx, esi
call fcn.00437a80
mov edi, dword [0x5375ec]
sub eax, edi
mov ebx, dword [0x5376e8]
mov ecx, ebx
sub ecx, eax
lea edx, [edi + eax]
test edx, edx
lea esi, [ecx + edx]
cmovns esi, ecx
xor eax, eax
test edx, edx
cmovns eax, edx
test esi, esi
jns 0x43cdbd
lea eax, [ebx + edi]
mov dword [0x5375ec], eax
xor eax, eax
test esi, esi
cmovns eax, esi
jmp 0x43ce53
cmp byte [0x54e63f], 0
je 0x43ce68
mov edi, dword [0x535c2c]
movzx eax, dl
add edi, ecx
mov dword [0x5375dc], ecx
mov ecx, dword [eax*4 + 0x54ed40]
test ecx, ecx
je 0x43cc62
movzx eax, byte [0x54e52c]
imul eax, eax, 0xd8
add eax, 0xdc
add eax, ecx
je 0x43cc62
cmp dword [eax + 0x1c], 0
je 0x43cc62
mov esi, dword [eax + 0x28]
test esi, esi
jle 0x43cc62
mov ecx, edi
call fcn.00437a80
mov edx, dword [0x5375ec]
mov ecx, 0
sub eax, edx
cmovns ecx, eax
lea eax, [ecx + edx]
cmp eax, esi
jle 0x43ce4c
mov ecx, esi
sub ecx, edx
xor eax, eax
test ecx, ecx
cmovns eax, ecx
mov dword [0x5376e8], eax
call fcn.00437af0
mov byte [0x51d9c2], 1
pop edi
pop esi
pop ebx
ret
mov esi, dword [0x54e648]
test esi, esi
js 0x43cc62
cmp byte [0x54e380], 0
mov dword [0x5375dc], ecx
je 0x43cea3
mov eax, dword [0x54e398]
add eax, 0xfffffffb
cmp dword [0x54e390], eax
jl 0x43cea3
cmp ecx, 0x277
mov eax, 0x278
cmove ecx, eax
cmp ecx, esi
jle 0x43ceb3
mov edx, ecx
mov ecx, esi
pop edi
pop esi
pop ebx
jmp 0x4394c0
jne 0x43cec1
mov edx, esi
mov ecx, esi
pop edi
pop esi
pop ebx
jmp 0x4394c0
jge 0x43cc62
pop edi
mov edx, esi
pop esi
pop ebx
jmp 0x4394c0