Function at 0x4039c1
Capabilities:
Encode data using xor
Extract resource via kernel32 functions

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x34
mov eax, dword [0x415004]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
lea ebx, [eax + 1]
mov dword [ebp - 8], ecx
lea ebx, [ecx + ebx*4]
xor edi, edi
mov dword [ebp - 0x18], ebx
cmp dword [ebx], edi
jne 0x403b6d
mov eax, dword [ebp + 8]
push edi
push ebx
push 1
mov esi, dword [eax]
push 0x142
push 8
push 0x990
mov ecx, dword [esi + 0x68]
push eax
call dword [0x419274]
call dword [esi + 0x68]
mov eax, dword [ebx]
lea ecx, [ebp - 0xc]
push edi
push ecx
mov dword [ebp - 0xc], edi
mov esi, dword [eax]
push 0x990
push edi
push eax
mov ecx, dword [esi + 0x2c]
call dword [0x419274]
call dword [esi + 0x2c]
fldz
mov esi, edi
mov ebx, dword [ebp - 8]
fst dword [ebp - 0x1c]
fst dword [ebp - 0x20]
fst dword [ebp - 0x24]
fst dword [ebp - 0x28]
fst dword [ebp - 0x2c]
fst dword [ebp - 0x30]
fld qword [0x402220]
fld qword [0x402210]
fld qword [0x402198]
fld1
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x10], esi
fild dword [ebp - 0x14]
fstp dword [ebp - 8]
fld dword [ebp - 8]
fstp dword [ebp - 8]
fld dword [ebp - 8]
fld st(0)
fmul st(5)
fdiv st(4)
call sub.msvcrt.dll__ftol2_sse
fdiv st(3)
mov edx, 0xff
mov ecx, dword [ebx + 0x9f4]
sub edx, eax
mov eax, dword [ebp - 0xc]
shl edx, 0x18
or ecx, edx
mov dword [esi + eax + 0xc], ecx
mov ecx, dword [ebx + 0x9f4]
mov eax, dword [ebp - 0xc]
xor ecx, 0x3f3f3f
or ecx, edx
mov dword [esi + eax + 0x24], ecx
mov eax, dword [ebp - 0xc]
imul ecx, dword [ebx + 0x9f4], 3
fstp dword [ebp - 8]
fld dword [ebp - 8]
fmul st(2)
or ecx, edx
mov dword [esi + eax + 0x24], ecx
mov edi, dword [ebp - 0xc]
fsub st(1)
lea edi, [esi + edi]
lea esi, [ebp - 0x24]
movsd dword es:[edi], dword [esi]
fstp dword [ebp - 8]
fld dword [ebp - 8]
fld st(0)
movsd dword es:[edi], dword [esi]
fmul st(1)
movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0xc]
lea esi, [ebp - 0x30]
fmulp st(1)
add edi, 0x18
add edi, dword [ebp - 0x10]
inc dword [ebp - 0x14]
fstp dword [ebp - 8]
fld dword [ebp - 8]
movsd dword es:[edi], dword [esi]
fadd st(1)
movsd dword es:[edi], dword [esi]
fmul qword [0x402178]
movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
fstp dword [ebp - 8]
fld dword [ebp - 8]
fst dword [esi + eax + 0x10]
mov eax, dword [ebp - 0xc]
fxch st(5)
fst dword [esi + eax + 0x14]
mov eax, dword [ebp - 0xc]
fxch st(5)
fstp dword [esi + eax + 0x28]
mov eax, dword [ebp - 0xc]
fld1
fstp dword [esi + eax + 0x2c]
add esi, 0x30
mov dword [ebp - 0x10], esi
cmp esi, 0x990
jl 0x403a63
mov esi, dword [ebp - 0xc]
lea edi, [ebx + 0x2c]
mov ebx, dword [ebp - 0x18]
mov ecx, 0x264
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx]
fstp st(4)
fstp st(1)
fstp st(2)
fstp st(0)
mov ecx, dword [eax]
fstp st(0)
push eax
mov esi, dword [ecx + 0x30]
mov ecx, esi
call dword [0x419274]
call esi
mov eax, dword [ebp + 0xc]
xor edi, edi
lea esi, [eax*4 + 0x416508]
cmp dword [esi], edi
jne 0x403bc1
push 0x401560
push 0x66
push edi
call dword [sym.imp.api_ms_win_core_libraryloader_l1_2_1.dll_FindResourceW]
mov edi, eax
xor ebx, ebx
mov dword [esi], ebx
test edi, edi
je 0x403bc1
push edi
push ebx
call dword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_SizeofResource]
test eax, eax
je 0x403bc1
push edi
push ebx
call dword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_LoadResource]
test eax, eax
je 0x403bc1
push eax
call dword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_LockResource]
test eax, eax
je 0x403bc1
mov ecx, dword [ebp + 8]
mov edx, eax
push esi
sub esp, 0x10
call fcn.0040aad3
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00413bf0
mov esp, ebp
pop ebp
ret 8