Function at 0x401f50
Capabilities:
Get common file path

Disassembly:
sub esp, 0x48
mov eax, dword [0x422f80]
xor eax, esp
mov dword [esp + 0x44], eax
fld dword [0x41d408]
push ebx
push esi
mov esi, ecx
xor ebx, ebx
push edi
mov edi, 1
mov dword [esi + 0x110], edi
mov dword [esi + 0xa50], ebx
mov byte [esi + 0x314], bl
mov dword [esi + 4], ebx
cmp dword [0x4244bc], ebx
jle 0x401fa5
mov eax, dword [esi + 4]
fst dword [esi + eax*4 + 0x4d0]
add dword [esi + 4], edi
mov ecx, dword [esi + 4]
cmp ecx, dword [0x4244bc]
jl 0x401f8d
push 0x500
fstp st(0)
lea edx, [esi + 0x510]
push ebx
push edx
call fcn.0040a8b0
push 0x100
lea eax, [esi + 0x214]
push ebx
push eax
call fcn.0040a8b0
add esp, 0x18
mov dword [esi + 0x414], ebx
mov dword [esi + 4], ebx
cmp dword [0x4244bc], ebx
jle 0x401fff
fld dword [0x41d408]
mov eax, dword [esi + 4]
fst dword [esi + eax*4 + 0x418]
add dword [esi + 4], edi
mov ecx, dword [esi + 4]
cmp ecx, dword [0x4244bc]
jl 0x401fe5
fstp st(0)
mov edx, dword [0x41d5b4]
fld1
mov dword [esi + 0x458], edx
mov eax, dword [0x41d5b8]
mov dword [esi + 0x45c], eax
movzx ecx, byte [0x41d5bc]
mov byte [esi + 0x460], cl
mov edx, dword [0x41d5b4]
mov dword [esi + 0x478], edx
mov eax, dword [0x41d5b8]
mov dword [esi + 0x47c], eax
movzx ecx, byte [0x41d5bc]
xor eax, eax
mov byte [esi + 0x480], cl
mov dword [esi + 0xa10], eax
mov dword [esi + 0xa14], eax
mov dword [esi + 0xa18], eax
mov dword [esi + 0xa1c], eax
mov dword [esi + 0xa20], eax
mov dword [esi + 0xa24], eax
mov dword [esi + 0xa28], eax
mov dword [esi + 0xa2c], eax
mov dword [esi + 0xa30], eax
mov dword [esi + 0xa34], eax
mov dword [esi + 0xa38], eax
mov dword [esi + 0xa3c], eax
mov dword [esi + 0xa40], eax
mov dword [esi + 0xa44], eax
mov dword [esi + 0xa48], eax
mov dword [esi + 0xa4c], eax
mov dword [esi + 4], ebx
mov eax, 8
mov edx, dword [esi + 4]
fst dword [esi + edx*4 + 0x4d0]
add dword [esi + 4], edi
cmp dword [esi + 4], eax
jb 0x4020b3
xor eax, eax
fstp st(0)
mov dword [esi + 0x49c], 0x2710
mov dword [esi + 0x4a0], 0xbb8
mov dword [esi + 0x4b0], eax
mov dword [esi + 0x4b4], eax
mov dword [esi + 0x4b8], eax
mov dword [esi + 0x4bc], eax
mov dword [esi + 0x4c0], eax
mov dword [esi + 0x4c4], eax
mov dword [esi + 0x4c8], eax
mov dword [esi + 0x4cc], eax
lea eax, [esi + 0x314]
push eax
push 0xff
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov edi, 6
cmp dword [0x4244bc], edi
mov eax, str.Devs6.cfg
je 0x402136
mov eax, str.Devs1x8.cfg
push 0x41d598
push eax
call fcn.0040b391
add esp, 8
cmp eax, ebx
mov dword [esp + 0xc], eax
jne 0x40218a
cmp dword [0x4244bc], edi
mov eax, 0x41d570
je 0x40215e
mov eax, 0x41d548
push eax
mov eax, dword [esi]
push 0x400
push 0x400
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
pop edi
mov dword [esi + 0x110], ebx
pop esi
pop ebx
mov ecx, dword [esp + 0x44]
xor ecx, esp
call fcn.0040a675
add esp, 0x48
ret
push eax
lea ecx, [esi + 8]
push 0xff
push ecx
call fcn.0040b146
add esp, 0xc
test eax, eax
je 0x40289b
push ebp
lea eax, [esi + 8]
lea edx, [eax + 1]
jmp 0x4021b0
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4021b0
sub eax, edx
cmp eax, 4
jb 0x40287c
push 0x41d544
lea edi, [esi + 8]
push edi
call fcn.0040b100
add esp, 8
test eax, eax
je 0x4021ec
add eax, edi
mov edx, edi
sub edx, eax
nop
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x4021e0
mov al, byte [esi + 8]
cmp al, 0x3b
je 0x40287c
cmp al, 0x23
je 0x40287c
cmp al, 0x2f
je 0x40287c
lea eax, [esi + 8]
push 0x3d
push eax
call fcn.0040acb0
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x40287c
mov edi, 1
add ebx, edi
mov dword [esi + 4], edi
cmp dword [0x4244bc], edi
jl 0x40229d
mov ecx, dword [esi + 4]
push ecx
lea edx, [esp + 0x18]
push str.Color_d
push edx
call fcn.0040a5fa
lea eax, [esp + 0x20]
add esp, 0xc
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402250
sub eax, edx
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 8]
push eax
call fcn.0040b03b
add esp, 0xc
test eax, eax
je 0x402281
add dword [esi + 4], edi
mov ecx, dword [esi + 4]
cmp ecx, dword [0x4244bc]
jle 0x402231
jmp 0x40229d
mov edx, dword [esi + 4]
lea eax, [esi + edx*4 + 0xa0c]
push eax
lea ecx, [ebx + 1]
push 0x41d538
push ecx
call fcn.0040b01c
add esp, 0xc
mov dword [esi + 4], edi
cmp dword [0x4244bc], edi
jl 0x40230f
mov edx, dword [esi + 4]
push edx
lea eax, [esp + 0x18]
push str.Scale_d
push eax
call fcn.0040a5fa
lea eax, [esp + 0x20]
add esp, 0xc
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4022c5
sub eax, edx
push eax
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 8]
push eax
call fcn.0040b03b
add esp, 0xc
test eax, eax
je 0x4022f6
add dword [esi + 4], edi
mov edx, dword [esi + 4]
cmp edx, dword [0x4244bc]
jle 0x4022a8
jmp 0x40230f
mov eax, dword [esi + 4]
lea ecx, [esi + eax*4 + 0x4cc]
push ecx
push 0x41d52c
push ebx
call fcn.0040b01c
add esp, 0xc
mov dword [esi + 4], edi
cmp dword [0x4244bc], edi
jl 0x40238a
lea ebx, [ebx]
mov edx, dword [esi + 4]
push edx
lea eax, [esp + 0x18]
push str.StartRecordLevel_d
push eax
call fcn.0040a5fa
lea eax, [esp + 0x20]
add esp, 0xc
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402340
sub eax, edx
push eax
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 8]
push eax
call fcn.0040b03b
add esp, 0xc
test eax, eax
je 0x402371
add dword [esi + 4], edi
mov edx, dword [esi + 4]
cmp edx, dword [0x4244bc]
jle 0x402320
jmp 0x40238a
mov eax, dword [esi + 4]
lea ecx, [esi + eax*4 + 0x414]
push ecx
push 0x41d52c
push ebx
call fcn.0040b01c
add esp, 0xc
mov dword [esi + 4], edi
cmp dword [0x4244bc], edi
jl 0x402437
lea esp, [esp]
mov edx, dword [esi + 4]
push edx
lea eax, [esp + 0x18]
push str.AverageNumber_d
push eax
call fcn.0040a5fa
lea eax, [esp + 0x20]
add esp, 0xc
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4023c0
sub eax, edx
push eax
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 8]
push eax
call fcn.0040b03b
add esp, 0xc
test eax, eax
je 0x4023f1
add dword [esi + 4], edi
mov edx, dword [esi + 4]
cmp edx, dword [0x4244bc]
jle 0x4023a0
jmp 0x402437
mov eax, dword [esi + 4]
lea ecx, [esi + eax*4 + 0x4ac]
push ecx
push 0x41d504
push ebx
call fcn.0040b01c
mov edx, dword [esi + 4]
lea eax, [esi + edx*4 + 0x4ac]
add esp, 0xc
cmp dword [eax], edi
jae 0x40241a
mov dword [eax], edi
mov eax, dword [esi + 4]
cmp dword [esi + eax*4 + 0x4ac], 0x989680
lea eax, [esi + eax*4 + 0x4ac]
jbe 0x402437
mov dword [eax], 0x989680
push 9
push str.COMNumber
lea edi, [esi + 8]
push edi
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x402467
push 4
lea ecx, [esi + 0x108]
push ebx
push ecx
call fcn.0040ae90
add esp, 0xc
mov byte [esi + 0x10c], 0
push 7
push str.DevName
push edi
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x4024bc
lea edi, [esi + 0x114]
mov edx, edi
mov eax, ebx
sub edx, ebx
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402487
push 0x22
push edi
call fcn.0040acb0
push 0x22
push edi
mov ebp, eax
call fcn.0040ad70
mov byte [eax], 0
lea eax, [ebp + 1]
add esp, 0x10
sub edi, eax
mov cl, byte [eax]
mov byte [eax + edi], cl
add eax, 1
test cl, cl
jne 0x4024b0
push 5
lea eax, [esi + 8]
push str.DevSN
push eax
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x40251d
lea edx, [esi + 0x214]
mov eax, ebx
sub edx, ebx
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x4024e0
push 0x22
lea ebp, [esi + 0x214]
push ebp
call fcn.0040acb0
push 0x22
push ebp
mov edi, eax
call fcn.0040ad70
mov byte [eax], 0
lea eax, [edi + 1]
mov edx, ebp
add esp, 0x10
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402511
push 6
lea eax, [esi + 8]
push str.Folder
push eax
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x40256c
push 0x3a
push ebx
call fcn.0040acb0
push 0x5c
push ebx
mov edi, eax
call fcn.0040ad70
add esp, 0x10
test edi, edi
je 0x40256c
test eax, eax
je 0x40256c
mov byte [eax + 1], 0
lea eax, [edi - 1]
lea edx, [esi + 0x314]
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402560
push 7
push str.Xwindow
lea ebp, [esi + 8]
push ebp
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x402598
lea edx, [esi + 0xa58]
push edx
push 0x41d4d4
push ebx
call fcn.0040b01c
add esp, 0xc
push 7
push str.Ywindow
push ebp
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x4025c1
lea eax, [esi + 0xa5c]
push eax
push 0x41d4d4
push ebx
call fcn.0040b01c
add esp, 0xc
push 0x10
push str.StartMeasureType
push ebp
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x4025ea
lea eax, [esi + 0x414]
push eax
push 0x41d4d4
push ebx
call fcn.0040b01c
add esp, 0xc
push 0xd
push str.MaxFileLength
push ebp
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x402613
lea eax, [esi + 0x49c]
push eax
push 0x41d4d4
push ebx
call fcn.0040b01c
add esp, 0xc
cmp dword [esi + 0x49c], 0xa
jae 0x402626
mov dword [esi + 0x49c], 0xa
push 0x12
push str.StartRecordPrequel
push ebp
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x40264f
lea eax, [esi + 0x4a0]
push eax
push 0x41d4d4
push ebx
call fcn.0040b01c
add esp, 0xc
mov eax, dword [esi + 0x4a0]
mov edi, 0x14
cmp eax, edi
jge 0x402666
mov dword [esi + 0x4a0], edi
jmp 0x402677
cmp eax, 0x7d00
jle 0x402677
mov dword [esi + 0x4a0], 0x7d00
push 0x10
push str.DelayRecordAfter
push ebp
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x4026a0
lea ecx, [esi + 0x4a4]
push ecx
push 0x41d4d4
push ebx
call fcn.0040b01c
add esp, 0xc
cmp dword [esi + 0x4a4], edi
jge 0x4026ae
mov dword [esi + 0x4a4], edi
push 0xf
push str.StartRecordTime
push ebp
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x4026d7
lea edx, [esi + 0x4a8]
push edx
push 0x41d46c
push ebx
call fcn.0040b01c
add esp, 0xc
push 8
push str.ICPstate
push ebp
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x402700
lea eax, [esi + 0xa50]
push eax
push 0x41d4d4
push ebx
call fcn.0040b01c
add esp, 0xc
push 0xc
push str.ReadChannels
push ebp
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x40276c
push 0x5b
push ebx
call fcn.0040acb0
push 0x5d
push ebx
mov edi, eax
call fcn.0040acb0
add esp, 0x10
test edi, edi
je 0x40276c
test eax, eax
je 0x40276c
mov byte [eax], 0
lea eax, [edi + 1]
mov ecx, eax
lea edi, [ecx + 1]
lea esp, [esp]
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x402740
sub ecx, edi
cmp ecx, dword [0x4244bc]
jne 0x40276c
mov ecx, esi
sub ecx, eax
lea edx, [ecx + 0x438]
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402760
push 0xf
lea eax, [esi + 8]
push str.AnalyzeChannels
push eax
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x4027dc
push 0x5b
push ebx
call fcn.0040acb0
push 0x5d
push ebx
mov edi, eax
call fcn.0040acb0
add esp, 0x10
test edi, edi
je 0x4027dc
test eax, eax
je 0x4027dc
mov byte [eax], 0
lea eax, [edi + 1]
mov ecx, eax
lea edi, [ecx + 1]
jmp 0x4027b0
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x4027b0
sub ecx, edi
cmp ecx, dword [0x4244bc]
jne 0x4027dc
lea edx, [esi + 0x458]
sub edx, eax
jmp 0x4027d0
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x4027d0
push 0xe
lea eax, [esi + 8]
push str.RecordChannels
push eax
call fcn.0040b03b
add esp, 0xc
test eax, eax
jne 0x40287c
push 0x5b
push ebx
call fcn.0040acb0
push 0x5d
push ebx
mov edi, eax
call fcn.0040acb0
add esp, 0x10
test edi, edi
je 0x40284c
test eax, eax
je 0x40284c
mov byte [eax], 0
lea eax, [edi + 1]
mov ecx, eax
lea edi, [ecx + 1]
nop
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x402820
sub ecx, edi
cmp ecx, dword [0x4244bc]
jne 0x40284c
lea edx, [esi + 0x478]
sub edx, eax
jmp 0x402840
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402840
xor eax, eax
mov dword [esi + 0x498], 0
cmp dword [0x4244bc], eax
jle 0x40287c
cmp byte [esi + eax + 0x478], 0x2b
jne 0x402871
add dword [esi + 0x498], 1
add eax, 1
cmp eax, dword [0x4244bc]
jl 0x402860
mov edx, dword [esp + 0x10]
push edx
lea eax, [esi + 8]
push 0xff
push eax
call fcn.0040b146
add esp, 0xc
test eax, eax
jne 0x4021a5
pop ebp
mov eax, dword [esp + 0xc]
push eax
call fcn.0040ae10
mov ebx, 1
add esp, 4
mov dword [esi + 4], ebx
cmp dword [0x4244bc], ebx
jl 0x40292b
fldz
mov eax, dword [esi + 4]
fld dword [esi + eax*4 + 0x4cc]
lea ecx, [eax + eax*4]
fchs
fstp dword [esi + ecx*4 + 0x510]
mov eax, dword [esi + 4]
fld dword [esi + eax*4 + 0x414]
lea edx, [eax + eax*4 + 0x145]
fchs
fstp dword [esi + edx*4]
mov eax, dword [esi + 4]
lea eax, [eax + eax*4]
fst dword [esi + eax*4 + 0x518]
mov eax, dword [esi + 4]
fld dword [esi + eax*4 + 0x414]
lea ecx, [eax + eax*4]
fstp dword [esi + ecx*4 + 0x51c]
mov eax, dword [esi + 4]
fld dword [esi + eax*4 + 0x4cc]
lea edx, [eax + eax*4]
fstp dword [esi + edx*4 + 0x520]
add dword [esi + 4], ebx
mov eax, dword [esi + 4]
cmp eax, dword [0x4244bc]
jle 0x4028ba
fstp st(0)
mov dword [esi + 4], 0
cmp dword [0x4244bc], 0
jle 0x402966
mov edi, dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov ecx, dword [esi + 4]
mov edx, dword [esi + ecx*4 + 0xa10]
push edx
call edi
mov ecx, dword [esi + 4]
mov dword [esi + ecx*4 + 0xa30], eax
add dword [esi + 4], ebx
mov edx, dword [esi + 4]
cmp edx, dword [0x4244bc]
jl 0x402941
mov ecx, dword [esp + 0x50]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040a675
add esp, 0x48
ret