Function at 0x1003f2b0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x48
call fcn.100e4860
mov eax, dword [0x1014c240]
xor eax, esp
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x4c]
push ebx
push ebp
mov ebp, dword [esp + 0x58]
xor ebx, ebx
mov dword [esp + 8], eax
cmp ebp, ebx
je 0x1003f63d
push esi
push edi
cmp dword [0x101566b4], ebx
je 0x1003f3d8
lea ecx, [esp + 0x18]
push ecx
call fcn.10029290
push 0xdf
push 0x1011c4d0
push 0x13
push 5
call fcn.10029790
lea edx, [esp + 0x2c]
push edx
push 0x10156268
call fcn.100292d0
mov edi, eax
push 0xe1
neg edi
push 0x1011c4d0
sbb edi, edi
push 0x13
inc edi
push 6
mov dword [esp + 0x40], edi
call fcn.10029790
add esp, 0x2c
cmp edi, ebx
jne 0x1003f352
push 0xe6
push 0x1011c4d0
push 0x12
push 9
call fcn.10029790
add esp, 0x10
mov eax, dword [0x101566a0]
mov edx, dword [0x101566a4]
mov ecx, dword [0x1015669c]
mov dword [esp + 0x20], eax
mov eax, dword [0x10156684]
mov dword [esp + 0x24], edx
mov edx, dword [0x10156688]
mov dword [esp + 0x40], eax
mov eax, dword [0x1015668c]
mov esi, ecx
add ecx, ebp
mov dword [esp + 0x44], edx
mov edx, dword [0x10156690]
mov dword [esp + 0x48], eax
mov eax, dword [0x10156694]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x50], eax
mov dword [0x1015669c], ecx
cmp ecx, 0x3ff
jb 0x1003f3e3
mov eax, 0x401005
mul ecx
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 9
imul eax, eax, 0xfffffc01
add ecx, eax
mov dword [0x1015669c], ecx
mov dword [0x10156698], 0x3ff
jmp 0x1003f3f9
mov dword [esp + 0x14], ebx
mov edi, ebx
jmp 0x1003f33c
mov eax, dword [0x10156698]
cmp eax, 0x3ff
jae 0x1003f3f9
cmp ecx, eax
jbe 0x1003f3f9
mov dword [0x10156698], ecx
mov eax, 0x66666667
imul ebp
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
add ecx, ecx
add ecx, ecx
mov edx, ebp
sub edx, ecx
xor ecx, ecx
test edx, edx
setg cl
add ecx, eax
add dword [0x101566a4], ecx
cmp edi, ebx
jne 0x1003f43e
push 0x106
push 0x1011c4d0
push 0x12
push 0xa
call fcn.10029790
add esp, 0x10
lea edx, [esp + 0x28]
push edx
call fcn.10041fc0
add esp, 4
cmp ebp, ebx
mov dword [esp + 0x18], ebx
jle 0x1003f586
cmp ebp, 0x14
mov edi, ebp
jle 0x1003f463
mov edi, 0x14
push 0
call fcn.10042600
push eax
lea eax, [esp + 0x30]
push eax
call fcn.10042010
add esp, 0xc
test eax, eax
je 0x1003f62e
push 0x14
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x30]
push edx
call fcn.100421c0
add esp, 0xc
test eax, eax
je 0x1003f62e
lea ebx, [edi + esi - 0x3ff]
lea ecx, [esi + 0x10156270]
lea edx, [esp + 0x28]
test ebx, ebx
jle 0x1003f4d5
mov eax, edi
sub eax, ebx
push eax
push ecx
push edx
call fcn.100421c0
add esp, 0xc
test eax, eax
je 0x1003f62e
push ebx
push 0x10156270
lea eax, [esp + 0x30]
push eax
jmp 0x1003f4d8
push edi
push ecx
push edx
call fcn.100421c0
add esp, 0xc
test eax, eax
je 0x1003f62e
mov eax, dword [esp + 0x10]
push edi
push eax
lea ecx, [esp + 0x30]
push ecx
call fcn.100421c0
add esp, 0xc
test eax, eax
je 0x1003f62e
push 8
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x30]
push eax
call fcn.100421c0
add esp, 0xc
test eax, eax
je 0x1003f62e
push 0
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x30]
push edx
call fcn.100421d0
add esp, 0xc
test eax, eax
je 0x1003f62e
inc dword [esp + 0x24]
add dword [esp + 0x10], edi
xor eax, eax
test edi, edi
jle 0x1003f56a
lea esp, [esp]
mov cl, byte [esp + eax + 0x40]
xor byte [esi + 0x10156270], cl
inc esi
cmp esi, 0x3ff
jl 0x1003f565
xor esi, esi
inc eax
cmp eax, edi
jl 0x1003f550
mov eax, dword [esp + 0x18]
add eax, 0x14
sub ebp, 0x14
cmp eax, dword [esp + 0x60]
mov dword [esp + 0x18], eax
jl 0x1003f457
mov edi, dword [esp + 0x14]
test edi, edi
jne 0x1003f5a0
push 0x13b
push 0x1011c4d0
push 0x12
push 9
call fcn.10029790
add esp, 0x10
xor eax, eax
jmp 0x1003f5b0
movzx edx, byte [esp + eax + 0x40]
xor byte [eax + 0x10156684], dl
movzx ecx, byte [esp + eax + 0x41]
movzx edx, byte [esp + eax + 0x42]
xor byte [eax + 0x10156685], cl
xor byte [eax + 0x10156686], dl
movzx ecx, byte [esp + eax + 0x43]
movzx edx, byte [esp + eax + 0x44]
xor byte [eax + 0x10156687], cl
xor byte [eax + 0x10156688], dl
add eax, 5
cmp eax, 0x14
jl 0x1003f5b0
fld qword [0x1011c4c8]
fld qword [0x101566a8]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x1003f612
fadd qword [esp + 0x64]
fstp qword [0x101566a8]
jmp 0x1003f614
fstp st(0)
test edi, edi
jne 0x1003f62e
push 0x148
push 0x1011c4d0
push 0x12
push 0xa
call fcn.10029790
add esp, 0x10
lea eax, [esp + 0x28]
push eax
call fcn.10042250
add esp, 4
pop edi
pop esi
mov ecx, dword [esp + 0x4c]
pop ebp
pop ebx
xor ecx, esp
call fcn.100e200a
add esp, 0x48
ret