Function at 0x4394e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov ebx, ecx
mov eax, dword [ecx + 4]
test eax, eax
je 0x439506
cmp eax, 2
je 0x439583
jmp 0x4396e8
push 0xbbf966b4
push dword [0x44adf8]
call fcn.0043eac0
add esp, 8
test eax, eax
je 0x439547
mov ecx, dword [ebx]
test ecx, ecx
je 0x439577
mov dword [esp + 0x10], 0
lea edx, [esp + 0x10]
push edx
push ecx
call eax
test eax, eax
je 0x439553
cmp dword [esp + 0x10], 0
je 0x439553
mov dword [ebx + 4], 3
jmp 0x439577
mov dword [ebx + 4], 1
jmp 0x4396e8
lea eax, [esp + 0x40]
push eax
call fcn.0043f2c0
add esp, 4
test al, al
je 0x439577
mov eax, dword [esp + 0x40]
mov ecx, 2
cmp eax, 3
je 0x439574
mov ecx, eax
mov dword [ebx + 4], ecx
mov eax, dword [ebx + 4]
cmp eax, 2
jne 0x4396e8
mov dword [esp + 8], ebx
mov dword [esp + 0x10], 0xb653b55e
mov dword [esp + 0x14], 0x51afb741
mov dword [esp + 0x18], 0xcececbc1
mov dword [esp + 0x1c], 0x3a23c13d
mov dword [esp + 0x20], 0xdac0cecd
mov byte [esp + 0x24], 0x54
mov dword [esp + 0x25], 0
mov word [esp + 0x29], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ebx + 0x10]
mov dword [esp + 0xc], edi
lea edx, [ebx + ebx]
mov eax, edx
and eax, 0x30
mov esi, ebx
xor esi, 0x7356038
add esi, eax
mov eax, esi
and eax, edi
add edi, esi
not edi
lea edi, [edi + eax*2]
and edi, esi
mov ecx, edi
or ecx, 0xfd
inc ecx
mov eax, edi
and eax, 0x7d
imul eax, ecx
mov ecx, edi
and ecx, 2
or edi, 2
imul edi, ecx
sub eax, edi
add eax, esi
add al, byte [esp + 0xc]
add al, 0xe8
mov byte [esp + ebx + 0x10], al
and edx, 2
xor ebx, 1
add ebx, edx
cmp ebx, 0x1b
jb 0x4395d0
lea esi, [esp + 0x10]
lea eax, [esp + 0x70]
push esi
push eax
call fcn.0043da40
add esp, 8
mov eax, dword [esp + 8]
mov eax, dword [eax]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], 0
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x48], eax
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0x30
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
lea eax, [esp + 0x40]
push 6
push eax
push dword [esp + 0x7c]
push dword [esp + 0x7c]
call fcn.0043db10
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov esi, dword [ebp + 0x10]
mov dword [esi + 4], edx
mov dword [esi], ecx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov esi, dword [ebp + 0x14]
mov dword [esi], edx
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [ebp + 0x18]
mov dword [edx], ecx
mov ecx, dword [esp + 0x34]
mov edx, dword [ebp + 0x1c]
mov dword [edx], ecx
jmp 0x439830
mov dword [esp + 0x40], 0x3f3e3944
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x40]
lea edx, [eax + 0x398fbc0a]
xor edx, ecx
mov esi, 0xc67043f5
sub esi, eax
or esi, edx
mov edx, esi
not edx
and esi, 2
mov edi, edx
and edi, 0xd
imul edi, esi
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
sub edx, eax
add edx, edi
add edx, 0xc67043f6
mov esi, edx
xor esi, ecx
not edx
and edx, ecx
add edx, edx
sub edx, esi
mov ecx, edx
and ecx, 0x4d
add ecx, ecx
xor edx, 0x32
sub ecx, edx
mov byte [esp + eax + 0x40], cl
lea ecx, [eax + eax]
mov edx, ecx
and edx, 2
and ecx, eax
or edx, eax
xor edx, 1
add edx, ecx
mov eax, edx
cmp edx, 4
jb 0x439700
mov eax, dword [esp + 0x40]
mov dword [esp + 0xc], eax
mov ebx, dword [ebx]
mov dword [esp + 0x10], 0x20272625
mov eax, 0x8bd5d989
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0x742a2687]
lea edi, [eax + 0x742a2700]
and edi, esi
mov edx, edi
and edx, 0xffffff8d
mov ecx, edi
or ecx, 0xfffffffd
inc ecx
imul ecx, edx
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
add ecx, esi
sub ecx, edi
add ecx, eax
mov edx, ecx
and edx, 0x52
xor ecx, 0x52
lea ecx, [ecx + edx*2]
lea edx, [eax + esi]
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax + 0x742a2687], cl
inc eax
cmp eax, 0x8bd5d98d
jne 0x439790
mov eax, dword [esp + 0x10]
mov ecx, dword [0x44ae04]
test ecx, ecx
je 0x43980e
xor edx, edx
mov esi, dword [0x44ae08]
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xba50defc
je 0x43983a
inc edx
cmp ecx, edx
jne 0x439800
mov edx, dword [ebp + 0x10]
mov dword [edx], ecx
mov dword [edx + 4], 0
mov ecx, dword [ebp + 0x14]
mov dword [ecx], ebx
mov dword [ecx + 4], 0
mov ecx, dword [ebp + 0x18]
mov dword [ecx], edi
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x18
mov dword [esp + 8], ebx
mov edx, dword [esi + edx*8 + 4]
cmp edx, eax
je 0x43980e
lea eax, [esp + 0x10]
push 0
push dword [esp + 0x10]
push eax
push 0
push dword [ebp + 8]
push dword [esp + 0x1c]
push 6
push edx
push dword [0x44ae0c]
call fcn.0043bd80
add esp, 0x24
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
jmp 0x43980e