Function at 0x438310
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x14
push ebp
push edi
mov edi, dword [esp + 0x20]
lea eax, [esp + 0x18]
push eax
push edi
mov ebp, dword [edi + 0x118]
mov dword [esp + 0x14], ebp
call fcn.00438240
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jl 0x438833
push ebx
push esi
mov esi, dword [edi + 0x118]
cmp eax, 8
mov dword [esp + 0x10], eax
jl 0x43866b
mov edi, 8
mov eax, dword [esi + 0x7d08]
test eax, eax
jne 0x4383ae
mov ebx, dword [esi + 0x7d04]
mov dword [esi + 0x7d08], 8
inc ebx
mov dword [esi + 0x7d04], ebx
mov eax, dword [esi + 0x13090]
lea ecx, [eax + eax*2]
mov eax, dword [esi + 0x7d00]
shl ecx, 4
mov edx, dword [ecx + esi + 0x1008c]
cmp edx, eax
jne 0x43839e
push esi
call fcn.00438890
add esp, 4
mov eax, dword [esi + 0x7d04]
mov ecx, dword [esi + 0x7cf8]
mov byte [eax + ecx], 0
mov eax, dword [esi + 0x7d08]
cmp edi, eax
jge 0x4383ba
mov eax, edi
mov ebx, dword [esi + 0x7d08]
mov ecx, dword [esi + 0x7d04]
sub ebx, eax
sub edi, eax
mov dword [esi + 0x7d08], ebx
mov edx, ebx
mov ebx, dword [esi + 0x7cf8]
lea ebp, [ecx + ebx]
mov ebx, 0x4c
mov ecx, edi
sar ebx, cl
mov ecx, edx
mov dl, byte [ebp]
shl bl, cl
or dl, bl
mov byte [ebp], dl
mov ecx, dword [esi + 0x7d00]
add ecx, eax
test edi, edi
mov dword [esi + 0x7d00], ecx
jg 0x438357
mov edx, dword [esp + 0x18]
lea eax, [edx - 8]
cmp eax, 8
mov dword [esp + 0x10], eax
jl 0x438663
mov edi, 8
mov eax, dword [esi + 0x7d08]
test eax, eax
jne 0x438476
mov edx, dword [esi + 0x7d04]
mov dword [esi + 0x7d08], 8
inc edx
mov dword [esi + 0x7d04], edx
mov eax, dword [esi + 0x13090]
lea eax, [eax + eax*2]
shl eax, 4
mov ecx, dword [eax + esi + 0x1008c]
mov eax, dword [esi + 0x7d00]
cmp ecx, eax
jne 0x438466
push esi
call fcn.00438890
add esp, 4
mov edx, dword [esi + 0x7d04]
mov eax, dword [esi + 0x7cf8]
mov byte [edx + eax], 0
mov eax, dword [esi + 0x7d08]
cmp edi, eax
jge 0x438482
mov eax, edi
mov ebx, dword [esi + 0x7d08]
mov ecx, dword [esi + 0x7d04]
sub ebx, eax
sub edi, eax
mov dword [esi + 0x7d08], ebx
mov edx, ebx
mov ebx, dword [esi + 0x7cf8]
lea ebp, [ecx + ebx]
mov ebx, 0x41
mov ecx, edi
sar ebx, cl
mov ecx, edx
mov dl, byte [ebp]
shl bl, cl
or dl, bl
mov byte [ebp], dl
mov ecx, dword [esi + 0x7d00]
add ecx, eax
test edi, edi
mov dword [esi + 0x7d00], ecx
jg 0x43841f
mov eax, dword [esp + 0x10]
sub eax, 8
cmp eax, 8
mov dword [esp + 0x10], eax
jl 0x4387d1
mov edi, 8
mov eax, dword [esi + 0x7d08]
test eax, eax
jne 0x43853e
mov ebp, dword [esi + 0x7d04]
mov dword [esi + 0x7d08], 8
inc ebp
mov ecx, dword [esi + 0x7d00]
mov dword [esi + 0x7d04], ebp
mov eax, dword [esi + 0x13090]
lea edx, [eax + eax*2]
shl edx, 4
mov eax, dword [edx + esi + 0x1008c]
cmp eax, ecx
jne 0x43852e
push esi
call fcn.00438890
add esp, 4
mov ecx, dword [esi + 0x7cf8]
mov edx, dword [esi + 0x7d04]
mov byte [ecx + edx], 0
mov eax, dword [esi + 0x7d08]
cmp edi, eax
jge 0x43854a
mov eax, edi
mov ebx, dword [esi + 0x7d08]
mov ecx, dword [esi + 0x7cf8]
sub ebx, eax
sub edi, eax
mov dword [esi + 0x7d08], ebx
mov edx, ebx
mov ebx, dword [esi + 0x7d04]
lea ebp, [ecx + ebx]
mov ebx, 0x4d
mov ecx, edi
sar ebx, cl
mov ecx, edx
mov dl, byte [ebp]
shl bl, cl
or dl, bl
mov byte [ebp], dl
mov ecx, dword [esi + 0x7d00]
add ecx, eax
test edi, edi
mov dword [esi + 0x7d00], ecx
jg 0x4384e7
mov eax, dword [esp + 0x10]
sub eax, 8
cmp eax, 8
mov dword [esp + 0x10], eax
jl 0x4387d1
mov edi, 8
mov eax, dword [esi + 0x7d08]
test eax, eax
jne 0x438606
mov ebp, dword [esi + 0x7d04]
mov dword [esi + 0x7d08], 8
inc ebp
mov ecx, dword [esi + 0x7d00]
mov dword [esi + 0x7d04], ebp
mov eax, dword [esi + 0x13090]
lea edx, [eax + eax*2]
shl edx, 4
mov eax, dword [edx + esi + 0x1008c]
cmp eax, ecx
jne 0x4385f6
push esi
call fcn.00438890
add esp, 4
mov ecx, dword [esi + 0x7d04]
mov edx, dword [esi + 0x7cf8]
mov byte [ecx + edx], 0
mov eax, dword [esi + 0x7d08]
cmp edi, eax
jge 0x438612
mov eax, edi
mov ebx, dword [esi + 0x7d08]
mov ecx, dword [esi + 0x7d04]
sub ebx, eax
sub edi, eax
mov dword [esi + 0x7d08], ebx
mov edx, ebx
mov ebx, dword [esi + 0x7cf8]
lea ebp, [ecx + ebx]
mov ebx, 0x45
mov ecx, edi
sar ebx, cl
mov ecx, edx
mov dl, byte [ebp]
shl bl, cl
or dl, bl
mov byte [ebp], dl
mov ecx, dword [esi + 0x7d00]
add ecx, eax
test edi, edi
mov dword [esi + 0x7d00], ecx
jg 0x4385af
sub dword [esp + 0x10], 8
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x28]
cmp dword [esp + 0x10], 0x20
jl 0x4386c8
call fcn.00436c80
mov ebx, eax
or ecx, 0xffffffff
mov edi, ebx
xor eax, eax
xor ebp, ebp
repne scasb al, byte es:[edi]
not ecx
dec ecx
test ecx, ecx
jle 0x4386c0
mov ecx, dword [esp + 0x10]
mov eax, 8
cmp ecx, eax
jl 0x4386c0
mov edx, ecx
push eax
sub edx, eax
mov dword [esp + 0x14], edx
movsx edx, byte [ebx + ebp]
push edx
push esi
call fcn.00438910
add esp, 0xc
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
inc ebp
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ebp, ecx
jl 0x43868b
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
cmp ebx, 1
jl 0x4386fe
mov eax, dword [esi + 0x13094]
push 1
push eax
push esi
call fcn.00438910
mov eax, dword [edi + 0x68]
mov edx, dword [esi + 0x13094]
add esp, 0xc
xor ecx, ecx
test eax, eax
sete cl
xor edx, ecx
dec ebx
mov dword [esi + 0x13094], edx
jne 0x4386d1
xor eax, eax
pop esi
mov dword [ebp + 0x13098], eax
mov dword [ebp + 0xce7c], eax
mov al, byte [ebp + 0x157dc]
pop ebx
test al, 2
je 0x438747
mov edx, dword [ebp + 0x157ec]
push edx
call fcn.004472e0
fmul qword [0x4574e8]
push ecx
fadd qword [0x4565d0]
fstp qword [esp]
call fcn.004298b1
add esp, 8
call fcn.00427e8c
mov dword [ebp + 0x157e4], eax
test byte [ebp + 0x157dc], 4
je 0x438833
fld dword [ebp + 0x157e0]
fmul qword [0x45b178]
fldlg2
sub esp, 8
fxch st(1)
fyl2x
fmul qword [0x45b240]
fstp qword [esp]
call fcn.0045470e
add esp, 8
call fcn.00427e8c
test eax, eax
mov dword [ebp + 0x157f0], eax
jle 0x438829
fld dword [edi + 0x14]
fabs
fstp qword [esp + 0x10]
fld qword [0x456610]
fabs
fld qword [esp + 0x10]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x4387de
fstp st(0)
fld dword [edi + 0x14]
fsub qword [0x456610]
fabs
fld qword [esp + 0x10]
fmul qword [0x45ad20]
fcompp
fnstsw ax
test ah, 1
je 0x43884f
jmp 0x4387fa
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x14]
jmp 0x43866b
fld dword [edi + 0x14]
fsub qword [0x456610]
fabs
fxch st(1)
fmul qword [0x45ad20]
fcompp
fnstsw ax
test ah, 1
je 0x43884f
fld qword [0x457c28]
fabs
fld qword [esp + 0x10]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x438839
fstp st(0)
fld dword [edi + 0x14]
fabs
fld qword [esp + 0x10]
fmul qword [0x45ad20]
fcompp
fnstsw ax
test ah, 1
je 0x43884f
mov dword [ebp + 0x157f4], 0xbf800000
pop edi
pop ebp
add esp, 0x14
ret
fld dword [edi + 0x14]
fabs
fxch st(1)
fmul qword [0x45ad20]
fcompp
fnstsw ax
test ah, 1
jne 0x438829
fld dword [ebp + 0x157e0]
fdivr qword [0x456700]
sub esp, 8
fmul qword [0x45b238]
fstp qword [esp]
call fcn.004298b1
fmul qword [0x456f38]
add esp, 8
pop edi
fstp dword [ebp + 0x157f4]
pop ebp
add esp, 0x14
ret