Function at 0x10057c60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x3564
call fcn.1006cd70
mov eax, dword [0x1008c0c0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x2400], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x23b8], eax
xor eax, eax
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x510], eax
mov dword [ebp - 0x50c], eax
mov dword [ebp - 0x508], eax
mov dword [ebp - 0x504], eax
mov dword [ebp - 0x23e8], eax
mov dword [ebp - 0x23fc], eax
mov dword [ebp - 0x23ec], eax
mov dword [ebp - 0x23f0], eax
xor al, al
mov byte [ebp - 0x23b9], al
mov al, byte [ebx + 0x1208]
inc dword [ebx + 0x1208]
and al, 3
mov byte [ebx + 0x129e], al
lea esi, [ebx + 0x1c08]
mov eax, dword [ebx + 0x11ec]
push dword [ebx + 0x11e4]
shl eax, 2
lea edi, [ebp - 0xfc0]
add esi, eax
mov dword [ebp - 0x23e4], ebx
add edi, eax
mov dword [ebp - 0x23d4], esi
lea eax, [ebx + 0x13e6]
mov dword [ebp - 0x23dc], edi
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.1005f390
mov eax, dword [ebx + 0x11dc]
add esp, 0xc
lea eax, [eax + eax*4]
lea esi, [esi + eax*4]
mov eax, dword [ebx + 0x11e4]
mov dword [ebp - 0x23e0], esi
lea ecx, [eax - 1]
test ecx, ecx
js 0x10057dfa
cmp eax, 4
jl 0x10057dd2
lea edi, [ecx + 1]
shr edi, 2
lea edx, [ecx - 2]
mov eax, edi
lea edx, [esi + edx*4]
neg eax
lea esi, [ebx + 0x13e4]
lea esi, [esi + ecx*2]
lea ecx, [ecx + eax*4]
lea esp, [esp]
movsx eax, word [esi + 2]
lea esi, [esi - 8]
mov dword [ebp - 0x23b0], eax
fild dword [ebp - 0x23b0]
fstp dword [edx + 8]
movsx eax, word [esi + 8]
mov dword [ebp - 0x23b0], eax
fild dword [ebp - 0x23b0]
fstp dword [edx + 4]
movsx eax, word [esi + 6]
mov dword [ebp - 0x23b0], eax
fild dword [ebp - 0x23b0]
fstp dword [edx]
movsx eax, word [esi + 4]
mov dword [ebp - 0x23b0], eax
fild dword [ebp - 0x23b0]
fstp dword [edx - 4]
sub edx, 0x10
sub edi, 1
jne 0x10057d70
mov esi, dword [ebp - 0x23e0]
mov edi, dword [ebp - 0x23dc]
test ecx, ecx
js 0x10057dfa
lea edx, [ebx + 0x13e6]
lea edx, [edx + ecx*2]
nop
movsx eax, word [edx]
lea edx, [edx - 2]
mov dword [ebp - 0x23b0], eax
fild dword [ebp - 0x23b0]
fstp dword [esi + ecx*4]
sub ecx, 1
jns 0x10057de0
mov eax, dword [ebx + 0x11dc]
mov esi, dword [ebp - 0x23d4]
lea eax, [eax + eax*4]
fld dword [esi + eax*4]
fld dword [0x100790bc]
fadd st(1), st(0)
fxch st(1)
fstp dword [esi + eax*4]
mov eax, dword [ebx + 0x11dc]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 0x11e4]
sar eax, 3
add ecx, eax
fld dword [esi + ecx*4]
fadd st(1)
fstp dword [esi + ecx*4]
mov eax, dword [ebx + 0x11dc]
mov ecx, dword [ebx + 0x11e4]
sar ecx, 3
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
fld dword [eax + ecx*8]
fsub st(1)
fstp dword [eax + ecx*8]
mov eax, dword [ebx + 0x11e4]
sar eax, 3
lea ecx, [eax + eax*2]
mov eax, dword [ebx + 0x11dc]
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
fld dword [eax + ecx*4]
fsub st(1)
fstp dword [eax + ecx*4]
mov ecx, dword [ebx + 0x11e4]
mov eax, dword [ebx + 0x11dc]
sar ecx, 3
shl ecx, 4
add ecx, esi
lea eax, [eax + eax*4]
fld dword [ecx + eax*4]
fadd st(1)
fstp dword [ecx + eax*4]
mov eax, dword [ebx + 0x11e4]
sar eax, 3
add eax, dword [ebx + 0x11dc]
lea eax, [eax + eax*4]
fld dword [esi + eax*4]
fadd st(1)
fstp dword [esi + eax*4]
mov eax, dword [ebx + 0x11e4]
sar eax, 3
lea ecx, [eax + eax*2]
mov eax, dword [ebx + 0x11dc]
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
fld dword [eax + ecx*8]
fsub st(1)
fstp dword [eax + ecx*8]
mov eax, dword [ebx + 0x11e4]
sar eax, 3
lea ecx, [eax*8]
sub ecx, eax
mov eax, dword [ebx + 0x11dc]
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
fsubr dword [eax + ecx*4]
fstp dword [eax + ecx*4]
cmp dword [ebx + 0x1244], 0
jne 0x100583ae
push dword [ebx + 0x13e0]
lea eax, [ebp - 0xfc0]
push esi
push eax
lea eax, [ebp - 0x12ac]
push eax
push ebx
call fcn.1005ffe0
push esi
push edi
lea eax, [ebp - 0x12ac]
push eax
push ebx
call fcn.1005f430
mov esi, dword [ebp + 0x14]
lea eax, [ebp - 0x12ac]
push esi
push dword [ebp - 0x23d4]
push edi
push eax
push ebx
call fcn.10060280
push esi
lea eax, [ebp - 0x12ac]
push eax
push ebx
call fcn.10060500
mov ecx, dword [ebx + 0x1670]
add esp, 0x44
lea edi, [ecx*8 + 0x5f4]
add edi, ecx
cmp dword [ebx + 0x17c8], 0
lea edi, [ebx + edi*4]
mov dword [ebp - 0x23d0], edi
je 0x100580ba
cmp dword [ebx + 0x11b0], 0x4d
jle 0x100580ba
push 0x1100
lea eax, [ebx + 0x90]
mov dword [ebx + ecx*4 + 0x1270], 1
push eax
lea eax, [ebp - 0x23ac]
push eax
call sub.VCRUNTIME140.dll_memcpy
lea esi, [ebx + 0x127c]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx + 0x11e0]
shl eax, 2
push eax
lea eax, [ebp - 0x12ac]
push eax
lea eax, [ebp - 0x530]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebx + 0x1670]
add esp, 0x18
test eax, eax
je 0x10057fe5
cmp dword [ebx + eax*4 + 0x126c], 0
jne 0x10058015
movzx eax, byte [ebx + 0x1bfc]
mov esi, dword [ebp - 0x23d0]
mov byte [ebx + 0x11b8], al
movzx eax, byte [ebx + 0x17cc]
add byte [esi], al
movzx eax, byte [esi]
movsx eax, al
cmp eax, 0x3f
jl 0x10058011
mov eax, 0x3f
mov byte [esi], al
jmp 0x1005801b
mov esi, dword [ebp - 0x23d0]
push dword [ebx + 0x11e0]
xor eax, eax
cmp dword [ebp + 0x14], 2
sete al
push eax
lea eax, [ebx + 0x11b8]
push eax
lea eax, [ebp - 0x520]
push esi
push eax
call fcn.1005ef60
mov ecx, dword [ebx + 0x11e0]
add esp, 0x14
xor eax, eax
test ecx, ecx
jle 0x1005806b
fld dword [0x10074f5c]
fild dword [ebp + eax*4 - 0x520]
fmul st(1)
fstp dword [ebp + eax*4 - 0x12ac]
inc eax
cmp eax, ecx
jl 0x10058054
fstp st(0)
mov eax, dword [ebx + 0x1670]
push dword [ebp - 0x23d4]
lea eax, [eax + eax*4]
shl eax, 6
add eax, 0x183c
add eax, ebx
push eax
lea eax, [ebp - 0x23ac]
push eax
push esi
lea eax, [ebp - 0x12ac]
push eax
push ebx
call fcn.10060870
mov eax, dword [ebx + 0x11e0]
shl eax, 2
push eax
lea eax, [ebp - 0x530]
push eax
lea eax, [ebp - 0x12ac]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0x24
push dword [ebx + 0x11e0]
lea eax, [ebx + 0x127c]
mov dword [ebp - 0x23b4], 0x100
push eax
mov dword [ebp - 0x23cc], 0
mov dword [ebp - 0x23d0], 0
call fcn.1005ef30
mov esi, dword [ebp - 0x23b8]
lea edi, [ebp - 0x2464]
mov dword [ebp - 0x23c0], eax
or edx, 0xffffffff
lea eax, [ebx + 0x90]
mov dword [ebp - 0x23d8], edx
push 0x1100
push eax
lea eax, [ebp - 0x23ac]
mov dword [ebp - 0x23f4], edx
mov ecx, 0xc
rep movsd dword es:[edi], dword [esi]
push eax
call sub.VCRUNTIME140.dll_memcpy
movsx eax, byte [ebx + 0x129e]
add esp, 0x14
mov edx, dword [ebp - 0x23c0]
xor esi, esi
mov dword [ebp - 0x2404], eax
movzx eax, word [ebx + 0x1688]
mov dword [ebp - 0x23f8], eax
mov eax, dword [ebx + 0x1684]
mov dword [ebp - 0x23dc], eax
mov ecx, dword [ebp - 0x23d8]
mov dword [ebp - 0x23c8], esi
cmp edx, ecx
jne 0x1005817c
mov edi, dword [ebp - 0x23f0]
mov dword [ebp - 0x23c4], edi
jmp 0x1005841d
cmp edx, dword [ebp - 0x23f4]
jne 0x10058195
mov edi, dword [ebp - 0x23ec]
mov dword [ebp - 0x23c4], edi
jmp 0x1005841d
test esi, esi
jle 0x100581f2
mov edi, dword [ebp - 0x23b8]
lea eax, [ebp - 0x23ac]
push 0x1100
push eax
lea eax, [ebx + 0x90]
mov ecx, 0xc
lea esi, [ebp - 0x2464]
rep movsd dword es:[edi], dword [esi]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x2404]
add esp, 0xc
mov esi, dword [ebp - 0x23c8]
mov byte [ebx + 0x129e], al
mov eax, dword [ebp - 0x23f8]
mov word [ebx + 0x1688], ax
mov eax, dword [ebp - 0x23dc]
mov dword [ebx + 0x1684], eax
push dword [ebp - 0x23d4]
lea eax, [ebx + 0x12a0]
push eax
lea eax, [ebx + 0x90]
push eax
lea eax, [ebx + 0x127c]
push eax
lea eax, [ebp - 0x12ac]
push eax
push ebx
call fcn.10060870
add esp, 0x18
cmp esi, 6
jne 0x10058244
cmp dword [ebp - 0x23cc], 0
jne 0x10058244
mov esi, dword [ebp - 0x23b8]
lea edi, [ebp - 0x2434]
mov ecx, 0xc
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x23c8]
push dword [ebp + 0x14]
mov edi, dword [ebp - 0x23b8]
push 0
push dword [ebx + 0x1670]
push edi
push ebx
call fcn.100576a0
push dword [ebx + 0x11e4]
lea eax, [ebx + 0x12a0]
push eax
movsx eax, byte [ebx + 0x129a]
push eax
movsx eax, byte [ebx + 0x1299]
push eax
push edi
call fcn.10057270
mov edx, edi
add esp, 0x28
bsr eax, dword [edx + 0x1c]
mov edi, dword [edx + 0x14]
sub edi, eax
mov dword [ebp - 0x23b0], eax
mov eax, dword [ebp + 0x18]
dec edi
mov dword [ebp - 0x23c4], edi
cmp esi, 6
jne 0x1005839c
cmp dword [ebp - 0x23cc], 0
jne 0x1005839c
cmp edi, eax
jle 0x1005839c
mov ecx, 0xc
lea esi, [ebp - 0x2434]
mov edi, edx
xor eax, eax
rep movsd dword es:[edi], dword [esi]
lea esi, [ebx + 0x127c]
mov cl, byte [ebp - 0xfc4]
mov byte [ebx + 0x1bfc], cl
cmp dword [ebx + 0x11e0], eax
jle 0x100582fd
jmp 0x100582f0
mov byte [esi + eax], 4
inc eax
cmp eax, dword [ebx + 0x11e0]
jl 0x100582f0
mov edi, dword [ebp + 0x14]
cmp edi, 2
je 0x10058307
mov byte [esi], cl
mov eax, dword [ebp - 0x23f8]
mov word [ebx + 0x1688], ax
mov eax, dword [ebp - 0x23dc]
mov dword [ebx + 0x1684], eax
xor eax, eax
cmp dword [ebx + 0x11e4], eax
jle 0x10058341
lea ebx, [ebx]
mov byte [ebx + eax + 0x12a0], 0
inc eax
cmp eax, dword [ebx + 0x11e4]
jl 0x10058330
push edi
push 0
push dword [ebx + 0x1670]
push edx
push ebx
call fcn.100576a0
push dword [ebx + 0x11e4]
mov esi, dword [ebp - 0x23b8]
lea eax, [ebx + 0x12a0]
push eax
movsx eax, byte [ebx + 0x129a]
push eax
movsx eax, byte [ebx + 0x1299]
push eax
push esi
call fcn.10057270
bsr eax, dword [esi + 0x1c]
mov edi, dword [esi + 0x14]
add esp, 0x28
mov esi, dword [ebp - 0x23c8]
sub edi, eax
dec edi
mov dword [ebp - 0x23b0], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x23c4], edi
cmp dword [ebp + 0x1c], 0
jne 0x10058411
test esi, esi
jne 0x10058411
cmp edi, eax
jg 0x10058431
mov esi, dword [ebp - 0x23b8]
mov eax, dword [ebx + 0x11dc]
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x11ec]
shl eax, 2
push eax
mov eax, dword [ebx + 0x11e4]
add eax, 0x702
lea eax, [ebx + eax*4]
push eax
lea eax, [ebx + 0x1c08]
push eax
call sub.VCRUNTIME140.dll_memmove
mov ecx, dword [ebp - 0x2400]
add esp, 0xc
cmp dword [ebx + 0x1244], 0
je 0x1005883b
pop edi
pop esi
mov dword [ecx], 0
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1006bfcb
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x23d8]
mov edx, dword [ebp - 0x23c0]
cmp esi, 6
je 0x100587c8
mov eax, dword [ebp + 0x18]
cmp edi, eax
jle 0x10058582
mov ecx, dword [ebp - 0x23cc]
test ecx, ecx
jne 0x10058480
cmp esi, 2
jl 0x10058480
fld dword [ebp - 0xff8]
fld dword [0x100746d4]
fmul st(1), st(0)
fcom st(1)
fnstsw ax
test ah, 5
jp 0x1005845b
fstp st(0)
jmp 0x1005845d
fstp st(1)
fstp dword [ebp - 0xff8]
mov byte [ebx + 0x129a], 0
mov dword [ebp - 0x23d0], 0
mov dword [ebp - 0x23f4], 0xffffffff
jmp 0x100584b1
mov eax, dword [ebp - 0x23b4]
cwde
mov dword [ebp - 0x23e8], eax
mov eax, dword [ebp - 0x23c0]
mov dword [ebp - 0x23d0], 1
mov dword [ebp - 0x23ec], edi
mov dword [ebp - 0x23f4], eax
test ecx, ecx
jne 0x10058609
xor edi, edi
mov dword [ebp - 0x23e0], edi
cmp dword [ebx + 0x11e0], edi
jle 0x10058603
mov eax, dword [ebx + 0x11e8]
xor edx, edx
mov dword [ebp - 0x23b0], edx
mov dword [ebp - 0x23c0], eax
lea esp, [esp]
xor esi, esi
mov ecx, edx
cmp edx, eax
jge 0x10058516
mov edi, dword [ebp - 0x23c0]
mov edi, edi
movsx eax, byte [ecx + ebx + 0x12a0]
inc ecx
cdq
xor eax, edx
sub eax, edx
add esi, eax
cmp ecx, edi
jl 0x100584f0
mov edi, dword [ebp - 0x23e0]
mov eax, dword [ebp - 0x23c0]
mov edx, dword [ebp - 0x23b0]
cmp dword [ebp - 0x23c8], 0
je 0x1005853f
cmp esi, dword [ebp + edi*4 - 0x530]
jge 0x10058532
cmp dword [ebp + edi*4 - 0x510], 0
je 0x1005853f
mov dword [ebp + edi*4 - 0x510], 1
jmp 0x10058554
mov ecx, dword [ebp - 0x23b4]
mov dword [ebp + edi*4 - 0x530], esi
mov word [ebp + edi*2 - 0x518], cx
mov ecx, dword [ebx + 0x11e8]
inc edi
add edx, ecx
mov dword [ebp - 0x23e0], edi
add eax, ecx
mov dword [ebp - 0x23b0], edx
mov dword [ebp - 0x23c0], eax
cmp edi, dword [ebx + 0x11e0]
jl 0x100584e0
jmp 0x10058603
add eax, 0xfffffffb
cmp edi, eax
jge 0x100583ae
mov esi, dword [ebp - 0x23b4]
movsx eax, si
mov dword [ebp - 0x23cc], 1
mov dword [ebp - 0x23f0], edi
mov dword [ebp - 0x23fc], eax
cmp edx, ecx
je 0x1005860f
mov eax, dword [ebp - 0x23b8]
lea edi, [ebp - 0x2434]
mov esi, eax
mov dword [ebp - 0x23d8], edx
mov ecx, 0xc
rep movsd dword es:[edi], dword [esi]
push dword [eax + 0x18]
push dword [eax]
lea eax, [ebp - 0x500]
push eax
call sub.VCRUNTIME140.dll_memcpy
push 0x1100
lea eax, [ebx + 0x90]
push eax
lea eax, [ebp - 0x3564]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov al, byte [ebx + 0x1bfc]
add esp, 0x18
mov byte [ebp - 0x23b9], al
mov edi, dword [ebp - 0x23c4]
mov esi, dword [ebp - 0x23b4]
mov eax, dword [ebp - 0x23cc]
test dword [ebp - 0x23d0], eax
mov eax, dword [ebp + 0x18]
jne 0x1005867a
cmp edi, eax
jle 0x10058645
mov eax, 0x4000
cmp si, ax
jge 0x10058636
lea eax, [esi + esi]
jmp 0x100586cf
mov dword [ebp - 0x23b4], 0x7fff
jmp 0x100586d8
sub edi, eax
shl edi, 7
mov eax, edi
cdq
idiv dword [ebx + 0x11e4]
add eax, 0x800
push eax
call fcn.1004e150
movzx edx, ax
add esp, 4
movsx ecx, si
sar eax, 0x10
imul edx, ecx
imul eax, esi
sar edx, 0x10
add edx, eax
movzx eax, dx
jmp 0x100586d2
sub eax, dword [ebp - 0x23f0]
mov edi, dword [ebp - 0x23fc]
mov esi, dword [ebp - 0x23e8]
mov ecx, dword [ebp - 0x23ec]
sub esi, edi
sub ecx, dword [ebp - 0x23f0]
imul eax, esi
sar esi, 2
cdq
idiv ecx
add eax, edi
movzx edx, ax
lea eax, [esi + edi]
movsx ecx, dx
mov dword [ebp - 0x23b4], edx
cmp ecx, eax
jle 0x100586bd
lea eax, [esi + edi]
jmp 0x100586cf
mov edx, dword [ebp - 0x23e8]
mov eax, edx
sub eax, esi
cmp ecx, eax
jge 0x100586d8
mov eax, edx
sub eax, esi
movzx eax, ax
mov dword [ebp - 0x23b4], eax
mov edi, dword [ebx + 0x11e0]
xor esi, esi
test edi, edi
jle 0x1005874f
mov ebx, dword [ebp - 0x23b4]
lea ebx, [ebx]
cmp dword [ebp + esi*4 - 0x510], 0
je 0x10058704
movzx eax, word [ebp + esi*2 - 0x518]
jmp 0x10058707
movzx eax, bx
mov edx, dword [ebp + esi*4 - 0xfd4]
cwde
movzx ecx, dx
imul ecx, eax
sar edx, 0x10
imul eax, edx
sar ecx, 0x10
add eax, ecx
cmp eax, 0x7fffff
jle 0x1005872e
mov eax, 0x7fffff
jmp 0x1005873a
cmp eax, 0xff800000
jge 0x1005873a
mov eax, 0xff800000
shl eax, 8
mov dword [ebp + esi*4 - 0x540], eax
inc esi
cmp esi, edi
jl 0x100586f0
mov ebx, dword [ebp - 0x23e4]
mov al, byte [ebp - 0xfc4]
lea ecx, [ebx + 0x1bfc]
mov byte [ecx], al
lea esi, [ebx + 0x127c]
xor eax, eax
cmp dword [ebp + 0x14], 2
push edi
sete al
push eax
push ecx
lea eax, [ebp - 0x540]
push eax
push esi
call fcn.1005f020
push dword [ebx + 0x11e0]
push esi
call fcn.1005ef30
mov ecx, dword [ebx + 0x11e0]
mov edx, eax
add esp, 0x1c
mov dword [ebp - 0x23c0], edx
xor eax, eax
test ecx, ecx
jle 0x100587bc
fld dword [0x10074f5c]
fild dword [ebp + eax*4 - 0x540]
fmul st(1)
fstp dword [ebp + eax*4 - 0x12ac]
inc eax
cmp eax, ecx
jl 0x100587a5
fstp st(0)
mov esi, dword [ebp - 0x23c8]
inc esi
jmp 0x1005815b
cmp dword [ebp - 0x23cc], 0
je 0x100583ae
cmp edx, ecx
je 0x100587e2
cmp edi, dword [ebp + 0x18]
jle 0x100583ae
mov edi, dword [ebp - 0x23b8]
lea esi, [ebp - 0x2434]
push dword [ebp - 0x241c]
mov ecx, 0xc
lea eax, [ebp - 0x500]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x23b8]
push eax
push dword [esi]
call sub.VCRUNTIME140.dll_memcpy
push 0x1100
lea eax, [ebp - 0x3564]
push eax
lea eax, [ebx + 0x90]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov al, byte [ebp - 0x23b9]
add esp, 0x18
mov byte [ebx + 0x1bfc], al
jmp 0x100583b4
mov eax, dword [ebx + 0x11e0]
mov dword [ebx + 0x1234], 0
pop edi
mov eax, dword [ebp + eax*4 - 0x11cc]
mov dword [ebx + 0x11bc], eax
mov al, byte [ebx + 0x1299]
mov byte [ebx + 0x11b9], al
bsr eax, dword [esi + 0x1c]
mov dword [ebp - 0x23e4], eax
mov eax, dword [esi + 0x14]
sub eax, dword [ebp - 0x23e4]
add eax, 6
sar eax, 3
mov dword [ecx], eax
xor eax, eax
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.1006bfcb
mov esp, ebp
pop ebp
ret