Function at 0x43cdc0
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 0x43971e
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.00437cb0
xor ecx, ecx
mov esi, eax
test edi, edi
cmovns ecx, edi
call fcn.00437cb0
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 0x43cdae
movzx eax, al
mov edx, dword [eax*4 + 0x54ed40]
test edx, edx
je 0x43cdae
movzx eax, byte [0x54e52c]
imul edi, eax, 0xd8
add edi, 0xdc
add edi, edx
je 0x43cdae
cmp dword [edi + 0x1c], 0
je 0x43cdae
mov esi, dword [edi + 0x28]
test esi, esi
jle 0x43cdae
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 0x43cbbc
call fcn.004022a0
mov ecx, edi
call fcn.00437a20
mov ecx, ebx
mov byte [0x54e4ef], 1
call fcn.00437cb0
mov ecx, dword [esp + 0x14]
mov ebp, eax
call fcn.0043cac0
mov ecx, dword [esp + 0x14]
mov ebx, eax
mov esi, dword [edi + 0x28]
mov dword [esp + 0x18], ebp
jmp 0x43cc01
cmp ebx, dword [0x5375dc]
jne 0x43cbe4
mov ecx, dword [0x537730]
cmp edx, ecx
je 0x43cdae
mov ebp, dword [0x5376ec]
mov ebx, dword [0x5376d8]
mov dword [esp + 0x18], ebp
jmp 0x43cc01
mov ecx, ebx
call fcn.00437cb0
mov ebp, dword [0x5376ec]
mov ebx, dword [0x5376d8]
mov ecx, dword [0x537730]
mov dword [esp + 0x18], eax
cmp byte [0x552497], 0
mov eax, esi
jne 0x43cc27
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
cmp eax, ecx
je 0x43cc23
mov ecx, eax
call fcn.0043cac0
mov edx, eax
jmp 0x43cc2b
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 0x43cc59
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 0x43cd0b
xor edi, edi
test ecx, ecx
cmovns edi, ecx
cmp eax, esi
cmovle esi, eax
cmp ecx, ebp
jne 0x43ccb2
xor edx, 0xffffff80
shl edx, 8
movzx eax, dx
cmp edi, esi
jge 0x43cd8e
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 0x43cd8e
sub ebx, edx
sub ebp, ecx
je 0x43cd8e
movsd xmm1, qword [0x4e2ae0]
movd xmm0, ebp
cvtdq2pd xmm0, xmm0
divsd xmm1, xmm0
cmp edi, esi
jge 0x43cd8e
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 0x43cce0
jmp 0x43cd8e
xor edi, edi
test ecx, ecx
cmovns edi, ecx
cmp eax, esi
cmovle esi, eax
cmp ecx, ebp
jne 0x43cd43
xor dl, 0x80
cmp edi, esi
jge 0x43cd8e
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 0x43cd8e
sub ebx, edx
sub ebp, ecx
je 0x43cd8e
movsd xmm1, qword [0x4e2ae0]
movd xmm0, ebp
cvtdq2pd xmm0, xmm0
divsd xmm1, xmm0
cmp edi, esi
jge 0x43cd8e
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 0x43cd70
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.004394e0
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 0x43cec2
mov ecx, dword [0x550b80]
cmp ecx, 0x280
jle 0x43cde8
mov ecx, 0x280
jmp 0x43cdef
xor eax, eax
test ecx, ecx
cmovs ecx, eax
mov eax, dword [0x550b84]
cmp eax, 0x18f
jle 0x43ce02
mov eax, 0x18f
jmp 0x43ce09
xor esi, esi
test eax, eax
cmovs eax, esi
test bl, bl
jne 0x43cf64
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 0x43cf43
cmp eax, 0xb7
jge 0x43cec6
movsx edx, word [0x53a6de]
cmp ecx, edx
jl 0x43cf33
lea eax, [edx + 0x10]
cmp ecx, eax
jg 0x43cf33
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.00484630
add esp, 0xc
mov byte [0x54e63e], 1
pop edi
pop esi
pop ebx
ret
cmp eax, 0x13e
jle 0x43cf33
movsx edx, word [0x53a6f6]
cmp ecx, edx
jl 0x43cf33
lea eax, [edx + 0x10]
cmp ecx, eax
jg 0x43cf33
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.00484630
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 0x4396f0
cmp byte [0x550b62], 0
je 0x43cec2
mov dword [0x54e648], 1
xor cl, cl
pop edi
pop esi
pop ebx
jmp 0x43cb10
cmp byte [0x550b62], 0
je 0x43cf77
mov cl, 1
pop edi
pop esi
pop ebx
jmp 0x43cb10
cmp ecx, dword [0x5375dc]
je 0x43cec2
cmp byte [0x550b61], 0
je 0x43cec2
cmp byte [0x54e63e], 0
je 0x43d02e
mov esi, dword [0x535c2c]
movzx eax, dl
add esi, ecx
mov dword [0x5375dc], ecx
mov ecx, dword [eax*4 + 0x54ed40]
test ecx, ecx
je 0x43cec2
movzx eax, byte [0x54e52c]
imul eax, eax, 0xd8
add eax, 0xdc
add eax, ecx
je 0x43cec2
cmp dword [eax + 0x1c], 0
je 0x43cec2
cmp dword [eax + 0x28], 0
jle 0x43cec2
mov ecx, esi
call fcn.00437cb0
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 0x43d01d
lea eax, [ebx + edi]
mov dword [0x5375ec], eax
xor eax, eax
test esi, esi
cmovns eax, esi
jmp 0x43d0b3
cmp byte [0x54e63f], 0
je 0x43d0c8
mov edi, dword [0x535c2c]
movzx eax, dl
add edi, ecx
mov dword [0x5375dc], ecx
mov ecx, dword [eax*4 + 0x54ed40]
test ecx, ecx
je 0x43cec2
movzx eax, byte [0x54e52c]
imul eax, eax, 0xd8
add eax, 0xdc
add eax, ecx
je 0x43cec2
cmp dword [eax + 0x1c], 0
je 0x43cec2
mov esi, dword [eax + 0x28]
test esi, esi
jle 0x43cec2
mov ecx, edi
call fcn.00437cb0
mov edx, dword [0x5375ec]
mov ecx, 0
sub eax, edx
cmovns ecx, eax
lea eax, [ecx + edx]
cmp eax, esi
jle 0x43d0ac
mov ecx, esi
sub ecx, edx
xor eax, eax
test ecx, ecx
cmovns eax, ecx
mov dword [0x5376e8], eax
call fcn.00437d20
mov byte [0x51d9c2], 1
pop edi
pop esi
pop ebx
ret
mov esi, dword [0x54e648]
test esi, esi
js 0x43cec2
cmp byte [0x54e380], 0
mov dword [0x5375dc], ecx
je 0x43d103
mov eax, dword [0x54e398]
add eax, 0xfffffffb
cmp dword [0x54e390], eax
jl 0x43d103
cmp ecx, 0x277
mov eax, 0x278
cmove ecx, eax
cmp ecx, esi
jle 0x43d113
mov edx, ecx
mov ecx, esi
pop edi
pop esi
pop ebx
jmp 0x4396f0
jne 0x43d121
mov edx, esi
mov ecx, esi
pop edi
pop esi
pop ebx
jmp 0x4396f0
jge 0x43cec2
pop edi
mov edx, esi
pop esi
pop ebx
jmp 0x4396f0