Function at 0x403960
Capabilities:
Extract resource via kernel32 functions
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x51f7cc
mov eax, dword fs:[0]
push eax
mov eax, 0x1014
call fcn.005068e0
mov eax, dword [0x579ec0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0x52ef98
push 0x86
xor edi, edi
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov esi, eax
test esi, esi
je 0x403d14
push esi
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x403d14
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov ebx, eax
test ebx, ebx
je 0x403d14
push esi
push edi
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov esi, eax
lea eax, [esi + 1]
push eax
call fcn.0040687e
push esi
mov edi, eax
push ebx
push edi
mov dword [ebp - 0x1020], edi
call fcn.00505ce0
mov byte [edi + esi], 0
call fcn.00403910
push 0x10
call fcn.00406844
mov dword [0x57b698], eax
xor ebx, ebx
mov dword [eax], ebx
mov ecx, dword [0x57b698]
push 0x14
mov dword [ecx + 4], ebx
call fcn.00406844
add esp, 0x18
mov dword [ebp - 0x1018], eax
mov dword [ebp - 4], ebx
cmp eax, ebx
je 0x403a36
push ebx
mov ecx, eax
call fcn.00401000
jmp 0x403a38
xor eax, eax
mov dword [ebp - 4], 0xffffffff
mov edx, dword [0x57b698]
mov dword [edx + 8], eax
mov eax, dword [0x57b698]
push edi
mov dword [eax + 0xc], ebx
call fcn.00403390
mov esi, dword [ebp - 0x1020]
add esp, 4
cmp byte [esi], 0
mov edi, eax
mov dword [ebp - 0x1018], edi
je 0x403cd8
jmp 0x403a74
xor ebx, ebx
mov al, byte [esi]
cmp al, 0x20
je 0x403a86
cmp al, 9
je 0x403a86
cmp al, 0xd
je 0x403a86
cmp al, 0xa
jne 0x403a89
inc esi
jmp 0x403a74
mov al, byte [esi]
test al, al
je 0x403cd8
cmp al, 0x2f
jne 0x403ad9
cmp byte [esi + 1], al
jne 0x403ad9
mov al, byte [esi + 2]
add esi, 2
cmp al, 0xd
je 0x403ccf
lea ebx, [ebx]
cmp al, 0xa
je 0x403ccf
test al, al
je 0x403cd8
push edi
push esi
push ebx
push ebx
call fcn.004035b0
add esi, eax
mov al, byte [esi]
add esp, 0x10
cmp al, 0xd
jne 0x403ab0
jmp 0x403ccf
mov dword [ebp - 0x101c], ebx
cmp al, 0x40
jne 0x403aee
inc esi
mov dword [ebp - 0x101c], 1
cmp byte [esi], 0x20
mov dword [ebp - 0x1014], esi
je 0x403b21
lea esp, [esp]
mov al, byte [esi]
cmp al, 9
je 0x403b21
cmp al, 0x3d
je 0x403b21
cmp al, 0x2c
je 0x403b21
push edi
push esi
push ebx
push ebx
call fcn.004035b0
add esi, eax
add esp, 0x10
cmp byte [esi], 0x20
jne 0x403b00
mov byte [esi], 0
mov al, byte [esi + 1]
inc esi
cmp al, 0x20
je 0x403b24
cmp al, 9
je 0x403b24
cmp al, 0x3d
je 0x403b24
cmp al, 0x2c
je 0x403b24
mov ebx, esi
cmp al, 0xd
je 0x403b5f
mov edi, edi
mov al, byte [esi]
cmp al, 0xa
je 0x403b5f
test al, al
je 0x403b68
push edi
push esi
push 0
push 0
call fcn.004035b0
add esi, eax
add esp, 0x10
cmp byte [esi], 0xd
jne 0x403b40
cmp byte [esi], 0
je 0x403b68
mov byte [esi], 0
inc esi
cmp dword [ebp - 0x101c], 0
je 0x403cfc
mov ecx, dword [ebp - 0x1014]
push ecx
call fcn.00403790
mov edx, dword [ebp - 0x1014]
push str.languageid
push edx
call fcn.00403690
add esp, 0xc
test eax, eax
jne 0x403ccf
xor edi, edi
cmp byte [ebx], al
mov dword [ebp - 0x1014], edi
setne al
test eax, eax
je 0x403c03
mov edi, edi
push 0xffffffffffffffff
push 0x2c
push ebx
call fcn.004036f0
mov edi, eax
add esp, 0xc
test edi, edi
je 0x403bc6
mov byte [edi], 0
push 0x10
push 0
push ebx
call fcn.0050797e
mov ecx, dword [ebp - 0x1014]
mov dword [ebp + ecx*4 - 0x1010], eax
inc ecx
add esp, 0xc
mov dword [ebp - 0x1014], ecx
test edi, edi
je 0x403bfd
lea ebx, [edi + 1]
mov edi, edi
mov al, byte [ebx]
cmp al, 0x20
je 0x403bfa
cmp al, 9
jne 0x403bb0
inc ebx
jmp 0x403bf0
mov edi, dword [ebp - 0x1014]
mov eax, dword [0x57b698]
mov ecx, dword [eax + 8]
push 0
push 0
call fcn.00401020
test eax, eax
jne 0x403c6f
push 0x10
call fcn.00406844
mov ebx, eax
push 0x14
mov dword [ebx], 0
mov dword [ebx + 4], 0
call fcn.00406844
add esp, 8
mov dword [ebp - 0x101c], eax
mov dword [ebp - 4], 1
test eax, eax
je 0x403c54
push 0
mov ecx, eax
call fcn.00401000
jmp 0x403c56
xor eax, eax
mov dword [ebp - 4], 0xffffffff
mov dword [ebx + 8], eax
mov ecx, dword [0x57b698]
mov dword [ebx + 0xc], ecx
mov dword [0x57b698], ebx
cmp edi, 1
jb 0x403cc9
jne 0x403c7f
cmp dword [ebp - 0x1010], 0
je 0x403cc9
mov edx, dword [0x57b698]
mov dword [edx], edi
xor ecx, ecx
mov eax, edi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0040687e
mov ecx, dword [0x57b698]
mov dword [ecx + 4], eax
mov ecx, dword [0x57b698]
lea edx, [edi*4]
push edx
mov edx, dword [ecx + 4]
lea eax, [ebp - 0x1010]
push eax
push edx
call fcn.00505ce0
add esp, 0x10
mov edi, dword [ebp - 0x1018]
cmp byte [esi], 0
jne 0x403a72
mov edx, dword [ebp - 0x1020]
push edx
call fcn.00406873
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
movzx eax, ax
mov dword [0x57b69c], eax
mov eax, 1
jmp 0x403d16
mov eax, dword [ebp - 0x1014]
mov ecx, dword [0x57b698]
mov ecx, dword [ecx + 8]
push ebx
push eax
call fcn.004010c0
jmp 0x403ccf
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0050629a
mov esp, ebp
pop ebp
ret