Function at 0x476a20
Capabilities:
Extract resource via kernel32 functions

Disassembly:
mov rax, rsp
sub rsp, 0xc8
mov qword [rax - 8], rbx
mov qword [rax - 0x10], rbp
mov qword [rax - 0x18], rsi
mov qword [rax - 0x20], rdi
mov qword [rax - 0x28], r12
mov qword [rax - 0x30], r13
mov qword [rax - 0x38], r14
mov qword [rax - 0x40], r15
mov rax, qword [0x00522a28]
mov rbp, rcx
xor r15d, r15d
lea rcx, [0x00522a28]
mov rbx, r9
movzx r12d, r8w
mov r14d, edx
mov r13d, r15d
mov dword [rsp + 0xd8], r15d
call qword [rax + 0x18]
lea rdx, [0x004e7dfc]
lea rdi, [rax + 0x18]
lea rsi, [r15 - 1]
test rdx, 0xffffffffffff0000
mov qword [rsp + 0x20], rdi
jne 0x476ac0
movzx r13d, dx
xor edx, edx
mov ecx, r13d
call fcn.00409680
test rax, rax
je 0x476ae3
lea rcx, [rsp + 0x20]
mov r8d, r13d
mov rdx, rax
call fcn.00417140
mov rdi, qword [rsp + 0x20]
mov r13d, r15d
jmp 0x476ae6
xor eax, eax
mov rdi, rdx
mov rcx, rsi
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x20]
call fcn.00416fd0
mov rdi, qword [rsp + 0x20]
jmp 0x476ae6
mov r13d, r15d
test r12w, r12w
jne 0x476af5
call fcn.00476dd0
mov r12w, ax
test rbx, rbx
jne 0x476b05
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov rbx, rax
movzx ecx, r14w
movzx r9d, r12w
mov edx, 6
shr cx, 4
add cx, 1
movzx r8d, cx
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FindResourceExW]
test rax, rax
jne 0x476ba4
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
cmp dword [rdi - 8], r15d
mov rcx, rax
jl 0x476b50
cmp rax, qword [rdi - 0x18]
jne 0x476b50
lea rbx, [rdi - 0x18]
lock add dword [rdi - 8], 1
jmp 0x476b8d
mov rax, qword [rax]
mov edx, dword [rdi - 0x10]
mov r8d, 2
call qword [rax]
test rax, rax
mov rbx, rax
jne 0x476b6c
call fcn.004050e0
int3
mov eax, dword [rdi - 0x10]
lea rcx, [rbx + 0x18]
mov r8, rdi
mov dword [rbx + 8], eax
mov eax, dword [rdi - 0x10]
add eax, 1
movsxd rdx, eax
add rdx, rdx
mov r9, rdx
call fcn.004a7900
lea rax, [rbx + 0x18]
mov qword [rbp], rax
lock xadd dword [rdi - 8], esi
add esi, 0xffffffff
test esi, esi
jmp 0x476d74
mov rdx, rax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LoadResource]
test rax, rax
mov rbx, rax
jne 0x476bfc
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
cmp dword [rdi - 8], r15d
mov rcx, rax
jl 0x476bdc
cmp rax, qword [rdi - 0x18]
jne 0x476bdc
lea rbx, [rdi - 0x18]
lock add dword [rdi - 8], 1
jmp 0x476b8d
mov rax, qword [rax]
mov edx, dword [rdi - 0x10]
mov r8d, 2
call qword [rax]
test rax, rax
mov rbx, rax
jne 0x476b6c
call fcn.004050e0
int3
movzx eax, r14w
cdq
and edx, 0xf
add eax, edx
and eax, 0xf
sub eax, edx
test eax, eax
jle 0x476c1f
mov ecx, eax
sub rcx, 1
movzx eax, word [rbx]
lea rbx, [rbx + rax*2 + 2]
jne 0x476c11
movzx edi, word [rbx]
mov eax, 2
lea ecx, [rdi + 1]
mul rcx
cmovo rax, rsi
mov rcx, rax
call fcn.004a5e00
lea rdx, [rbx + 2]
mov r8, rdi
mov rcx, rax
mov r12, rax
call fcn.004a90b0
cmp dword [rsp + 0xf0], r15d
mov word [r12 + rdi*2], r15w
je 0x476cb5
xor eax, eax
mov rcx, rsi
mov rdi, r12
repne scasw ax, word [rdi]
mov rdx, r12
mov r13d, 1
not rcx
mov qword [rsp + 0x48], 7
mov qword [rsp + 0x40], r15
lea r8, [rcx - 1]
lea rcx, [rsp + 0x28]
mov word [rsp + 0x30], r15w
call fcn.00402780
lea rdx, [rsp + 0x28]
lea rcx, [rsp + 0x50]
call fcn.0049ef70
cmp qword [rax + 0x20], 8
jb 0x476caf
mov rdx, qword [rax + 8]
jmp 0x476cb8
lea rdx, [rax + 8]
jmp 0x476cb8
mov rdx, r12
test rdx, rdx
je 0x476ccf
xor eax, eax
mov rcx, rsi
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r15d, [rcx - 1]
lea rcx, [rsp + 0x20]
mov r8d, r15d
call fcn.00416fd0
test r13b, 1
je 0x476cf4
cmp qword [rsp + 0x70], 8
jb 0x476cf4
mov rcx, qword [rsp + 0x58]
call fcn.004a6f90
mov rcx, r12
call fcn.004a8850
mov rdi, qword [rsp + 0x20]
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
cmp dword [rdi - 8], 0
mov rcx, rax
jl 0x476d25
cmp rax, qword [rdi - 0x18]
jne 0x476d25
lea rbx, [rdi - 0x18]
lock add dword [rdi - 8], 1
jmp 0x476d62
mov rax, qword [rax]
mov edx, dword [rdi - 0x10]
mov r8d, 2
call qword [rax]
test rax, rax
mov rbx, rax
jne 0x476d41
call fcn.004050e0
int3
mov eax, dword [rdi - 0x10]
lea rcx, [rbx + 0x18]
mov r8, rdi
mov dword [rbx + 8], eax
mov eax, dword [rdi - 0x10]
add eax, 1
movsxd rdx, eax
add rdx, rdx
mov r9, rdx
call fcn.004a7900
lea rax, [rbx + 0x18]
mov qword [rbp], rax
lock xadd dword [rdi - 8], esi
add esi, 0xffffffff
test esi, esi
jg 0x476d84
mov rcx, qword [rdi - 0x18]
lea rdx, [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r15, qword [rsp + 0x88]
mov r14, qword [rsp + 0x90]
mov r13, qword [rsp + 0x98]
mov r12, qword [rsp + 0xa0]
mov rdi, qword [rsp + 0xa8]
mov rsi, qword [rsp + 0xb0]
mov rbx, qword [rsp + 0xc0]
mov rax, rbp
mov rbp, qword [rsp + 0xb8]
add rsp, 0xc8
ret