Function at 0x403b36
Capabilities:
Extract resource via kernel32 functions
Print debug messages
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x9fc
mov eax, dword [0x487590]
xor eax, esp
mov dword [esp + 0x9f8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
push ecx
mov dword [esp + 0x14], eax
mov eax, esp
push ecx
mov dword [eax], 0x47a8dc
mov eax, esp
mov esi, 0x47a8fc
mov dword [eax], esi
call fcn.00402f0e
mov ecx, eax
call fcn.0040c2bb
test eax, eax
jne 0x403bcd
mov esi, str.hwang
lea edi, [esp + 0x200]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x7f2
movsd dword es:[edi], dword [esi]
push eax
lea eax, [esp + 0x216]
push eax
movsw word es:[edi], word [esi]
call fcn.00438850
add esp, 0xc
push str.DoResLua_failed__GLOBAL_VAR.LUAC
lea eax, [esp + 0x210]
push eax
call fcn.00437dbf
pop ecx
pop ecx
lea eax, [esp + 0x200]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
xor eax, eax
jmp 0x404353
push ecx
mov eax, esp
push ecx
mov dword [eax], 0x47a94c
mov eax, esp
mov dword [eax], esi
call fcn.00402f0e
mov ecx, eax
call fcn.0040c2bb
test eax, eax
jne 0x403c19
mov esi, str.hwang
lea edi, [esp + 0x200]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x7f2
movsd dword es:[edi], dword [esi]
push eax
lea eax, [esp + 0x216]
push eax
movsw word es:[edi], word [esi]
call fcn.00438850
add esp, 0xc
push str.DoResLua_failed__INSTSCRIPT.LUAC
jmp 0x403ba9
call fcn.00402f0e
mov ecx, eax
call fcn.0040c2b8
mov esi, eax
mov edx, str.global_install_mutex_guid
mov ecx, esi
call fcn.0041d7ab
xor ebx, ebx
push ebx
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d44a
pop ecx
mov edx, eax
lea ecx, [esp + 0x20]
call fcn.0040384f
push 0xfffffffffffffffe
pop edx
mov ecx, esi
call fcn.0041d09c
mov edx, 0x47a9d0
call fcn.0041d7ab
push ebx
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d36d
pop ecx
push 0xfffffffffffffffe
pop edx
mov ecx, esi
mov edi, eax
call fcn.0041d09c
mov ecx, dword [esp + 0x20]
cmp dword [ecx - 0xc], ebx
je 0x403c97
push 0x47a8b4
lea ecx, [esp + 0x24]
call fcn.004045e9
test eax, eax
je 0x403c97
mov edi, ebx
jmp 0x403ca5
push str.GlobalA043B702_166A_4FB8_9733_E2BC4713F36F
lea ecx, [esp + 0x24]
call fcn.00401761
mov ecx, dword [esp + 0x20]
push edi
call fcn.004011df
pop ecx
mov dword [esp + 0x1c], eax
test eax, eax
je 0x403d06
mov esi, str.hwang
lea edi, [esp + 0x200]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x7f2
lea eax, [esp + 0x212]
push ebx
push eax
movsw word es:[edi], word [esi]
call fcn.00438850
add esp, 0xc
lea eax, [esp + 0x20c]
push str.CreateAppInstance_return_true
push eax
call fcn.00437dbf
pop ecx
pop ecx
lea eax, [esp + 0x200]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x404336
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
call fcn.0040460b
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.USER32.dll_DefWindowProcW]
lea eax, [esp + 0xa0]
push eax
mov dword [esp + 0xa4], 8
mov dword [esp + 0xa8], 4
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
sub esp, 0xc
call fcn.00404d88
lea eax, [esp + 0xa0]
push eax
lea ecx, [esp + 0x11c]
mov dword [esp + 0xa4], 0x47adb8
mov dword [esp + 0xb4], eax
call fcn.00403a8d
mov ecx, dword [esp + 0xb0]
test ecx, ecx
je 0x403d8e
mov edx, dword [ecx]
lea eax, [esp + 0xa0]
cmp ecx, eax
setne al
movzx eax, al
push eax
call dword [edx + 0x10]
mov edx, 0x47aa94
mov ecx, esi
call fcn.0041d7ab
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d1e2
cmp eax, 6
jne 0x403db8
call fcn.00402f0e
push ebx
push ebx
push esi
call fcn.0040ca44
jmp 0x403dc2
push 0xfffffffffffffffe
pop edx
mov ecx, esi
call fcn.0041d09c
mov edx, 0x47aaa8
mov ecx, esi
call fcn.0041d7ab
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d427
test eax, eax
push 0xfffffffffffffffe
pop edx
mov ecx, esi
setne byte [esp + 0xe]
call fcn.0041d09c
mov edx, 0x47aac0
call fcn.0041d7ab
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d427
test eax, eax
push 0xfffffffffffffffe
pop edx
mov ecx, esi
setne byte [esp + 0xf]
call fcn.0041d09c
mov edi, ebx
lea ecx, [esp + 0x138]
mov dword [esp + 0x24], edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x138], ebx
mov dword [esp + 0x13c], ebx
call fcn.0041c7ea
mov al, byte [esp + 0xe]
test al, al
je 0x403e48
cmp byte [esp + 0xf], bl
je 0x404028
push ecx
mov eax, esp
push ecx
mov dword [eax], str.LAYOUT.XML
mov eax, esp
lea ecx, [esp + 0x1c]
mov dword [eax], 0x47aaf4
call fcn.00404d2f
mov edi, dword [esp + 0x14]
mov dword [esp + 0x24], edi
test al, al
jne 0x403eb7
mov esi, str.hwang
lea edi, [esp + 0x200]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x7f2
lea eax, [esp + 0x212]
push ebx
push eax
movsw word es:[edi], word [esi]
call fcn.00438850
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.LoadResource_failed._type_:_XML__id_:_LAYOUT.XMLhwang_err:_d_r_n
lea eax, [esp + 0x214]
push eax
call fcn.00437dbf
add esp, 0xc
jmp 0x404488
push edi
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [esp + 0xa0], eax
test eax, eax
jne 0x403efe
mov esi, str.hwang
lea edi, [esp + 0x200]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x7f2
lea eax, [esp + 0x212]
push ebx
push eax
movsw word es:[edi], word [esi]
call fcn.00438850
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.LockResource_failed.hwang_err:_d_r_n
jmp 0x403ea2
push dword [esp + 0x18]
push dword [0x489e08]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov dword [esp + 0x14], eax
test eax, eax
jne 0x403f47
mov esi, str.hwang
lea edi, [esp + 0x200]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x7f2
lea eax, [esp + 0x212]
push ebx
push eax
movsw word es:[edi], word [esi]
call fcn.00438850
add esp, 0xc
push str.ResSize__0_r_n
jmp 0x404479
lea eax, [esp + 0x28]
push eax
push 0x47ae00
push dword [esp + 0x18]
call dword [sym.imp.USER32.dll_GetClassInfoW]
lea eax, [esp + 0x28]
push eax
mov dword [esp + 0x50], str.Dtl_Installer
call dword [sym.imp.USER32.dll_RegisterClassW]
sub esp, 0x10
lea eax, [esp + 0xb0]
push dword [esp + 0x24]
lea ecx, [esp + 0x14c]
push dword [esp + 0xb4]
push eax
call fcn.0041c8a6
mov ecx, dword [esp + 0xa0]
test ecx, ecx
je 0x404015
cmp ecx, 0xe
ja 0x403fa7
call fcn.0041c74a
jmp 0x403fac
mov eax, str.Unknown_error
push eax
lea ecx, [esp + 0x18]
call fcn.0040335f
mov esi, str.hwang
lea edi, [esp + 0x200]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x7f2
lea eax, [esp + 0x212]
push ebx
push eax
movsw word es:[edi], word [esi]
call fcn.00438850
add esp, 0xc
lea eax, [esp + 0x20c]
push dword [esp + 0x14]
push str.Load_buffer_failed___s_r_n
push eax
call fcn.00437dbf
add esp, 0xc
lea eax, [esp + 0x200]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov ecx, dword [esp + 0x14]
lea ecx, [ecx - 0x10]
call fcn.00401551
jmp 0x40430f
test edi, edi
je 0x404024
push edi
call dword [sym.imp.KERNEL32.dll_FreeResource]
mov dword [esp + 0x24], ebx
mov al, byte [esp + 0xe]
mov edi, dword [sym.imp.USER32.dll_ShowWindow]
test al, al
je 0x40410c
mov edx, 0x47a834
mov ecx, esi
call fcn.0041d7ab
push ebx
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d44a
pop ecx
mov edx, eax
lea ecx, [esp + 0x10]
call fcn.0040384f
push 0xfffffffffffffffe
pop edx
mov ecx, esi
call fcn.0041d09c
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x14]
call fcn.00404c66
mov edx, dword [esp + 0x14]
mov ecx, esi
call fcn.0041d664
mov ecx, dword [esp + 0x14]
lea ecx, [ecx - 0x10]
call fcn.00401551
mov edx, 0x47ac1c
mov ecx, esi
call fcn.0041d996
mov edx, 0x47ac28
mov ecx, esi
call fcn.0041d7ab
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d1e2
cmp eax, 6
jne 0x4040bd
call fcn.00402f0e
push ebx
push ebx
push esi
call fcn.0040ca44
jmp 0x4040c7
push 0xfffffffffffffffe
pop edx
mov ecx, esi
call fcn.0041d09c
mov edx, 0x47ac3c
mov ecx, esi
call fcn.0041d7ab
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d1e2
cmp eax, 6
jne 0x4040f1
call fcn.00402f0e
push ebx
push ebx
push esi
call fcn.0040ca44
jmp 0x4040fb
push 0xfffffffffffffffe
pop edx
mov ecx, esi
call fcn.0041d09c
mov ecx, dword [esp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.00401551
jmp 0x4043dc
push str.InitDlg
push ecx
push ecx
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0xb0]
push eax
lea ecx, [esp + 0x14c]
call fcn.0041c661
mov ecx, eax
call fcn.0041c685
cmp dword [esp + 0x10], ebx
jne 0x40416a
mov esi, str.hwang
lea edi, [esp + 0x200]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x7f2
lea eax, [esp + 0x212]
push ebx
push eax
movsw word es:[edi], word [esi]
call fcn.00438850
add esp, 0xc
push str.node__Dlg_name_InitDlg___is_empty_
jmp 0x404479
lea eax, [esp + 0x28]
push eax
mov dword [esp + 0x2c], vtable.WTL::CMessageLoop.0
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
call fcn.00404bb8
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0xbc]
call fcn.004088c2
push ebx
push ebx
lea ecx, [esp + 0xc8]
call fcn.004047cc
test eax, eax
jne 0x4041c4
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x4042fa
lea eax, [esp + 0xb8]
push eax
lea eax, [esp + 0xc4]
push eax
call fcn.00404777
push ebx
push 0x4046e8
push ebx
push 0x81
push dword [0x489e08]
call dword [sym.imp.USER32.dll_CreateDialogParamW]
test eax, eax
je 0x4042fa
push 1
push dword [esp + 0xc0]
call edi
lea ecx, [esp + 0x28]
call fcn.00404aca
cmp eax, 1
je 0x40421c
call fcn.004049d1
jmp 0x4042fa
mov edx, 0x47ac28
mov ecx, esi
call fcn.0041d7ab
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d1e2
cmp eax, 6
jne 0x404246
call fcn.00402f0e
push ebx
push ebx
push esi
call fcn.0040ca44
jmp 0x404250
push 0xfffffffffffffffe
pop edx
mov ecx, esi
call fcn.0041d09c
push str.InstallDlg
push ecx
push ecx
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0xb0]
push eax
lea ecx, [esp + 0x14c]
call fcn.0041c661
mov ecx, eax
call fcn.0041c685
cmp dword [esp + 0x14], ebx
jne 0x4042c8
mov esi, str.hwang
lea edi, [esp + 0x200]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x7f2
lea eax, [esp + 0x212]
push ebx
push eax
movsw word es:[edi], word [esi]
call fcn.00438850
add esp, 0xc
lea eax, [esp + 0x20c]
push str.node__Dlg_name_InstallDlg___is_empty_
push eax
call fcn.00437dbf
pop ecx
pop ecx
lea eax, [esp + 0x200]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x4042fa
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x64]
call fcn.00406fe9
push ebx
push ebx
lea ecx, [esp + 0x70]
call fcn.004047cc
test eax, eax
jne 0x40436a
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea ecx, [esp + 0x60]
call fcn.00407074
lea ecx, [esp + 0xb8]
call fcn.00408958
lea ecx, [esp + 0x28]
call fcn.004045a2
lea ecx, [esp + 0x138]
call fcn.0041c855
mov eax, dword [esp + 0x24]
test eax, eax
je 0x40432a
push eax
call dword [sym.imp.KERNEL32.dll_FreeResource]
lea ecx, [esp + 0x118]
call fcn.00403ace
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x404345
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
call fcn.00401551
mov eax, ebx
mov ecx, dword [esp + 0xa04]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00437bed
mov esp, ebp
pop ebp
ret 0x10
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x6c]
push eax
call fcn.00404777
push ebx
push 0x4046e8
push ebx
push 0x81
push dword [0x489e08]
call dword [sym.imp.USER32.dll_CreateDialogParamW]
test eax, eax
je 0x4042f1
push 1
push dword [esp + 0x68]
call edi
lea ecx, [esp + 0x28]
call fcn.00404aca
cmp eax, 1
je 0x4043b9
call fcn.004049d1
jmp 0x4042f1
call fcn.004049d1
lea ecx, [esp + 0x60]
call fcn.00407074
lea ecx, [esp + 0xb8]
call fcn.00408958
lea ecx, [esp + 0x28]
call fcn.004045a2
mov edx, 0x47ad20
mov ecx, esi
call fcn.0041d7ab
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d1e2
cmp eax, 6
jne 0x404406
call fcn.00402f0e
push ebx
push ebx
push esi
call fcn.0040ca44
jmp 0x404410
push 0xfffffffffffffffe
pop edx
mov ecx, esi
call fcn.0041d09c
cmp byte [esp + 0xe], bl
je 0x404420
cmp byte [esp + 0xf], bl
je 0x40455b
push str.CompleteDlg
push ecx
push ecx
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0xb0]
push eax
lea ecx, [esp + 0x14c]
call fcn.0041c661
mov ecx, eax
call fcn.0041c685
cmp dword [esp + 0x10], ebx
jne 0x40449b
mov esi, str.hwang
lea edi, [esp + 0x200]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x7f2
lea eax, [esp + 0x212]
push ebx
push eax
movsw word es:[edi], word [esi]
call fcn.00438850
add esp, 0xc
push str.node__Dlg_name_CompleteDlg___is_empty_
lea eax, [esp + 0x210]
push eax
call fcn.00437dbf
pop ecx
pop ecx
lea eax, [esp + 0x200]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x40430f
lea eax, [esp + 0x60]
push eax
mov dword [esp + 0x64], vtable.WTL::CMessageLoop.0
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], ebx
call fcn.00404bb8
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x2c]
call fcn.00401aeb
push ebx
push ebx
lea ecx, [esp + 0x38]
call fcn.004047cc
test eax, eax
jne 0x4044fc
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea ecx, [esp + 0x28]
call fcn.00401b3e
lea ecx, [esp + 0x60]
jmp 0x40430a
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x34]
push eax
call fcn.00404777
push ebx
push 0x4046e8
push ebx
push 0x81
push dword [0x489e08]
call dword [sym.imp.USER32.dll_CreateDialogParamW]
test eax, eax
je 0x4044ea
push 1
push dword [esp + 0x30]
call edi
lea ecx, [esp + 0x60]
call fcn.00404aca
cmp eax, 1
je 0x404544
call fcn.004049d1
jmp 0x4044ea
call fcn.004049d1
lea ecx, [esp + 0x28]
call fcn.00401b3e
lea ecx, [esp + 0x60]
call fcn.004045a2
mov edx, 0x47ada0
mov ecx, esi
call fcn.0041d7ab
or edx, 0xffffffff
mov ecx, esi
call fcn.0041d1e2
cmp eax, 6
jne 0x404585
call fcn.00402f0e
push ebx
push ebx
push esi
call fcn.0040ca44
jmp 0x40458f
push 0xfffffffffffffffe
pop edx
mov ecx, esi
call fcn.0041d09c
xor ebx, ebx
inc ebx
jmp 0x40430f