Function at 0x402f00
Capabilities:
Accept command line arguments
Identify system language via api
Persist via default file association registry key
Query or enumerate registry value
Resolve function by parsing pe exports
Set registry value

Disassembly:
sub esp, 0xbec
push ebx
push ebp
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
mov dword [0x407454], eax
mov eax, dword [esp + 0xc08]
xor edi, edi
xor ebp, ebp
cmp eax, edi
je 0x402f2f
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov ebp, eax
mov esi, dword [esp + 0xc00]
mov ebx, dword [sym.imp.USER32.dll_LoadStringW]
push 0x100
push 0x407248
push 0x9c45
push esi
call ebx
push 0x100
push 0x407048
push 0x9c46
push esi
call ebx
push str.Bundler
push edi
push 0x1f0001
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
test eax, eax
jne 0x403198
push str.Bundler
push 1
push edi
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
push edi
push 0x30
push 0x30
push 1
push 0x68
push esi
mov dword [0x407450], esi
call dword [sym.imp.USER32.dll_LoadImageW]
push 0x7f00
push edi
mov dword [0x407448], eax
mov dword [esp + 0x2c], 3
mov dword [esp + 0x30], 0x4029f0
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], eax
call dword [sym.imp.USER32.dll_LoadCursorW]
push edi
mov dword [esp + 0x40], eax
call dword [sym.imp.GDI32.dll_GetStockObject]
lea edx, [esp + 0x24]
push edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], str.Bundler
call dword [sym.imp.USER32.dll_RegisterClassW]
test ax, ax
je 0x403228
lea eax, [esp + 0x10]
push eax
push 1
push edi
push str.SoftwareMacromediaFlashLiteSoundBundlerSettings
push 0x80000001
mov dword [esp + 0x2c], 0x3c
mov word [esp + 0x88], di
mov dword [esp + 0x24], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4030cd
mov eax, dword [esp + 0x10]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x78]
push edx
push edi
push edi
push str.Main_Window_Rect
push eax
call ebx
test eax, eax
jne 0x40307d
push 0x40702c
push 0x407028
push 0x407024
push str.22
lea ecx, [esp + 0x84]
push str._u___u___u___u
push ecx
call dword [sym.imp.MSVCR71.dll_swscanf]
add esp, 0x18
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0xf0]
push eax
push edi
push edi
push str.Dialog_Dimensions
push ecx
call ebx
test eax, eax
jne 0x4030bc
push 0x407034
push 0x407030
lea edx, [esp + 0xf4]
push str._u___u
push edx
call dword [sym.imp.MSVCR71.dll_swscanf]
add esp, 0x10
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ebx, dword [sym.imp.USER32.dll_LoadStringW]
mov edx, dword [0x407450]
push 0x256
lea ecx, [esp + 0x780]
push ecx
push 0x9c52
push edx
call ebx
mov eax, dword [0x407024]
mov ecx, dword [0x40702c]
mov edx, dword [0x407028]
push edi
push esi
push edi
push edi
sub ecx, eax
push ecx
mov ecx, dword [str.22]
sub edx, ecx
push edx
push eax
push ecx
push 0x80ce0000
lea eax, [esp + 0x7a0]
push eax
push str.Bundler
push edi
call dword [sym.imp.USER32.dll_CreateWindowExW]
xor ecx, ecx
mov dword [esp + 0x1c], ecx
lea edx, [esp + 0x1c]
mov dword [esp + 0x20], ecx
push edx
mov dword [0x40744c], eax
mov dword [esp + 0x20], 8
mov dword [esp + 0x24], 0xff
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov eax, dword [esp + 0xc0c]
mov ecx, dword [0x40744c]
push eax
push ecx
call dword [sym.imp.USER32.dll_ShowWindow]
mov edx, dword [0x40744c]
push edx
call dword [sym.imp.USER32.dll_UpdateWindow]
push edi
call dword [sym.imp.ole32.dll_OleInitialize]
push 0x10
call sub.MSVCR71.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
cmp eax, edi
je 0x403237
mov dword [eax], 0x4053a4
mov word [eax + 4], di
jmp 0x403239
cmp ebp, edi
je 0x403228
push ebp
call dword [sym.imp.MSVCR71.dll_wcslen]
add esp, 4
test eax, eax
je 0x403228
push str.Bundler
push str.Bundler
call dword [sym.imp.USER32.dll_FindWindowW]
cmp eax, edi
mov dword [esp + 0x14], eax
je 0x402f87
push 8
call sub.MSVCR71.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
cmp eax, edi
je 0x4031e5
xor ecx, ecx
mov edx, eax
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov esi, eax
jmp 0x4031e7
xor esi, esi
push ebp
call dword [sym.imp.MSVCR71.dll_wcslen]
inc eax
lea ebx, [eax + eax]
push ebx
mov dword [esi], eax
call sub.MSVCR71.dll_void____cdecl_operator_new___unsigned_int_
mov dword [esi + 4], eax
mov word [ebx + eax - 2], di
mov eax, dword [esi + 4]
push ebp
push eax
call dword [sym.imp.MSVCR71.dll_wcscpy]
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov ecx, dword [esp + 0x18]
push eax
push 0x401
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xbec
ret 0x10
xor eax, eax
push eax
mov eax, dword [0x40744c]
push eax
call dword [sym.imp.ole32.dll_RegisterDragDrop]
push 0x104
lea ecx, [esp + 0x578]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea edx, [esp + 0x574]
push edx
lea eax, [esp + 0x16a]
push eax
mov word [esp + 0x16c], 0x22
call dword [sym.imp.MSVCR71.dll_wcscpy]
mov ebx, dword [sym.imp.MSVCR71.dll_wcscat]
lea ecx, [esp + 0x16c]
push str.___1
push ecx
call ebx
lea edx, [esp + 0x174]
push edx
mov word [esp + 0x9e8], di
mov dword [esp + 0x28], edi
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], 0x114
call dword [sym.imp.MSVCR71.dll_wcslen]
add esp, 0x14
push eax
lea eax, [esp + 0x168]
push eax
push 1
push str.FlashLiteSoundBundle_shellopencommand
push 0x80000000
call dword [sym.imp.ADVAPI32.dll_RegSetValueW]
lea ecx, [esp + 0x574]
push ecx
lea edx, [esp + 0x168]
push edx
call dword [sym.imp.MSVCR71.dll_wcscpy]
lea eax, [esp + 0x16c]
push 0x405474
push eax
call ebx
push edi
push 1
lea ecx, [esp + 0x17c]
push ecx
push str.FlashLiteSoundBundleDefaultIcon
call fcn.00401230
push edi
push 1
push str.FlashLiteSoundBundle
push str..fls
call fcn.00401230
add esp, 0x30
push 0x6a
push esi
call dword [sym.imp.USER32.dll_LoadAcceleratorsW]
cmp ebp, edi
mov esi, dword [sym.imp.MSVCR71.dll_wcslen]
mov dword [esp + 0x14], eax
je 0x403399
push ebp
call esi
add esp, 4
test eax, eax
je 0x403399
cmp word [ebp], 0x22
push ebp
je 0x403391
lea edx, [esp + 0x370]
push edx
mov word [esp + 0x374], 0x22
mov word [esp + 0x376], di
call ebx
push ebp
call esi
push ebp
mov word [esp + eax*2 + 0x37e], 0x22
call esi
mov word [esp + eax*2 + 0x380], di
lea eax, [esp + 0x37c]
push eax
call fcn.00401ac0
add esp, 0x14
jmp 0x403399
call fcn.00401ac0
add esp, 4
mov ebx, dword [sym.imp.USER32.dll_GetMessageW]
push edi
push edi
push edi
lea ecx, [esp + 0x64]
push ecx
call ebx
test eax, eax
je 0x4033fb
mov ebp, dword [sym.imp.USER32.dll_TranslateAcceleratorW]
jmp 0x4033c0
mov eax, dword [esp + 0x14]
mov ecx, dword [0x40744c]
lea edx, [esp + 0x58]
push edx
push eax
push ecx
call ebp
test eax, eax
jne 0x4033ed
lea edx, [esp + 0x58]
push edx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x58]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
push edi
push edi
push edi
lea ecx, [esp + 0x64]
push ecx
call ebx
test eax, eax
jne 0x4033c0
mov edx, dword [0x40702c]
mov eax, dword [0x407028]
mov ecx, dword [0x407024]
mov ebx, dword [sym.imp.MSVCR71.dll_swprintf]
push edx
mov edx, dword [str.22]
push eax
push ecx
push edx
lea eax, [esp + 0x84]
push str._u___u___u___u
push eax
call ebx
mov ecx, dword [0x407034]
mov edx, dword [0x407030]
push ecx
push edx
lea eax, [esp + 0x10c]
push str._u___u
push eax
call ebx
add esp, 0x28
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x14]
push edx
push edi
push 0x20006
push edi
push 0x4053f0
push edi
push str.SoftwareMacromediaFlashLiteSoundBundlerSettings
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x4034cf
lea eax, [esp + 0x74]
push eax
call esi
mov edx, dword [esp + 0x14]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
add esp, 4
shl eax, 1
push eax
lea ecx, [esp + 0x78]
push ecx
push 1
push edi
push str.Main_Window_Rect
push edx
call ebx
lea eax, [esp + 0xec]
push eax
call esi
mov edx, dword [esp + 0x14]
add esp, 4
shl eax, 1
push eax
lea ecx, [esp + 0xf0]
push ecx
push 1
push edi
push str.Dialog_Dimensions
push edx
call ebx
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x60]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbec
ret 0x10