Function at 0x43cd10
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 0x43967e
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.00437c00
xor ecx, ecx
mov esi, eax
test edi, edi
cmovns ecx, edi
call fcn.00437c00
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 0x43ccfe
movzx eax, al
mov edx, dword [eax*4 + 0x54ed40]
test edx, edx
je 0x43ccfe
movzx eax, byte [0x54e52c]
imul edi, eax, 0xd8
add edi, 0xdc
add edi, edx
je 0x43ccfe
cmp dword [edi + 0x1c], 0
je 0x43ccfe
mov esi, dword [edi + 0x28]
test esi, esi
jle 0x43ccfe
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 0x43cb0c
call fcn.004022a0
mov ecx, edi
call fcn.00437970
mov ecx, ebx
mov byte [0x54e4ef], 1
call fcn.00437c00
mov ecx, dword [esp + 0x14]
mov ebp, eax
call fcn.0043ca10
mov ecx, dword [esp + 0x14]
mov ebx, eax
mov esi, dword [edi + 0x28]
mov dword [esp + 0x18], ebp
jmp 0x43cb51
cmp ebx, dword [0x5375dc]
jne 0x43cb34
mov ecx, dword [0x537730]
cmp edx, ecx
je 0x43ccfe
mov ebp, dword [0x5376ec]
mov ebx, dword [0x5376d8]
mov dword [esp + 0x18], ebp
jmp 0x43cb51
mov ecx, ebx
call fcn.00437c00
mov ebp, dword [0x5376ec]
mov ebx, dword [0x5376d8]
mov ecx, dword [0x537730]
mov dword [esp + 0x18], eax
cmp byte [0x552488], 0
mov eax, esi
jne 0x43cb77
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
cmp eax, ecx
je 0x43cb73
mov ecx, eax
call fcn.0043ca10
mov edx, eax
jmp 0x43cb7b
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 0x43cba9
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 0x43cc5b
xor edi, edi
test ecx, ecx
cmovns edi, ecx
cmp eax, esi
cmovle esi, eax
cmp ecx, ebp
jne 0x43cc02
xor edx, 0xffffff80
shl edx, 8
movzx eax, dx
cmp edi, esi
jge 0x43ccde
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 0x43ccde
sub ebx, edx
sub ebp, ecx
je 0x43ccde
movsd xmm1, qword [0x4e2b20]
movd xmm0, ebp
cvtdq2pd xmm0, xmm0
divsd xmm1, xmm0
cmp edi, esi
jge 0x43ccde
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 0x43cc30
jmp 0x43ccde
xor edi, edi
test ecx, ecx
cmovns edi, ecx
cmp eax, esi
cmovle esi, eax
cmp ecx, ebp
jne 0x43cc93
xor dl, 0x80
cmp edi, esi
jge 0x43ccde
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 0x43ccde
sub ebx, edx
sub ebp, ecx
je 0x43ccde
movsd xmm1, qword [0x4e2b20]
movd xmm0, ebp
cvtdq2pd xmm0, xmm0
divsd xmm1, xmm0
cmp edi, esi
jge 0x43ccde
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 0x43ccc0
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.00439440
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 0x43ce12
mov ecx, dword [0x550b80]
cmp ecx, 0x280
jle 0x43cd38
mov ecx, 0x280
jmp 0x43cd3f
xor eax, eax
test ecx, ecx
cmovs ecx, eax
mov eax, dword [0x550b84]
cmp eax, 0x18f
jle 0x43cd52
mov eax, 0x18f
jmp 0x43cd59
xor esi, esi
test eax, eax
cmovs eax, esi
test bl, bl
jne 0x43ceb4
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 0x43ce93
cmp eax, 0xb7
jge 0x43ce16
movsx edx, word [0x53a6de]
cmp ecx, edx
jl 0x43ce83
lea eax, [edx + 0x10]
cmp ecx, eax
jg 0x43ce83
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.00484500
add esp, 0xc
mov byte [0x54e63e], 1
pop edi
pop esi
pop ebx
ret
cmp eax, 0x13e
jle 0x43ce83
movsx edx, word [0x53a6f6]
cmp ecx, edx
jl 0x43ce83
lea eax, [edx + 0x10]
cmp ecx, eax
jg 0x43ce83
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.00484500
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 0x439650
cmp byte [0x550b62], 0
je 0x43ce12
mov dword [0x54e648], 1
xor cl, cl
pop edi
pop esi
pop ebx
jmp 0x43ca60
cmp byte [0x550b62], 0
je 0x43cec7
mov cl, 1
pop edi
pop esi
pop ebx
jmp 0x43ca60
cmp ecx, dword [0x5375dc]
je 0x43ce12
cmp byte [0x550b61], 0
je 0x43ce12
cmp byte [0x54e63e], 0
je 0x43cf7e
mov esi, dword [0x535c2c]
movzx eax, dl
add esi, ecx
mov dword [0x5375dc], ecx
mov ecx, dword [eax*4 + 0x54ed40]
test ecx, ecx
je 0x43ce12
movzx eax, byte [0x54e52c]
imul eax, eax, 0xd8
add eax, 0xdc
add eax, ecx
je 0x43ce12
cmp dword [eax + 0x1c], 0
je 0x43ce12
cmp dword [eax + 0x28], 0
jle 0x43ce12
mov ecx, esi
call fcn.00437c00
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 0x43cf6d
lea eax, [ebx + edi]
mov dword [0x5375ec], eax
xor eax, eax
test esi, esi
cmovns eax, esi
jmp 0x43d003
cmp byte [0x54e63f], 0
je 0x43d018
mov edi, dword [0x535c2c]
movzx eax, dl
add edi, ecx
mov dword [0x5375dc], ecx
mov ecx, dword [eax*4 + 0x54ed40]
test ecx, ecx
je 0x43ce12
movzx eax, byte [0x54e52c]
imul eax, eax, 0xd8
add eax, 0xdc
add eax, ecx
je 0x43ce12
cmp dword [eax + 0x1c], 0
je 0x43ce12
mov esi, dword [eax + 0x28]
test esi, esi
jle 0x43ce12
mov ecx, edi
call fcn.00437c00
mov edx, dword [0x5375ec]
mov ecx, 0
sub eax, edx
cmovns ecx, eax
lea eax, [ecx + edx]
cmp eax, esi
jle 0x43cffc
mov ecx, esi
sub ecx, edx
xor eax, eax
test ecx, ecx
cmovns eax, ecx
mov dword [0x5376e8], eax
call fcn.00437c70
mov byte [0x51d9c2], 1
pop edi
pop esi
pop ebx
ret
mov esi, dword [0x54e648]
test esi, esi
js 0x43ce12
cmp byte [0x54e380], 0
mov dword [0x5375dc], ecx
je 0x43d053
mov eax, dword [0x54e398]
add eax, 0xfffffffb
cmp dword [0x54e390], eax
jl 0x43d053
cmp ecx, 0x277
mov eax, 0x278
cmove ecx, eax
cmp ecx, esi
jle 0x43d063
mov edx, ecx
mov ecx, esi
pop edi
pop esi
pop ebx
jmp 0x439650
jne 0x43d071
mov edx, esi
mov ecx, esi
pop edi
pop esi
pop ebx
jmp 0x439650
jge 0x43ce12
pop edi
mov edx, esi
pop esi
pop ebx
jmp 0x439650