Function at 0x401d30
Capabilities:
Get common file path

Disassembly:
sub esp, 0x48
mov eax, dword [0x422f90]
xor eax, esp
mov dword [esp + 0x44], eax
fld dword [0x41d3f0]
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 [0x4244cc], ebx
jle 0x401d85
mov eax, dword [esi + 4]
fst dword [esi + eax*4 + 0x4d0]
add dword [esi + 4], edi
mov ecx, dword [esi + 4]
cmp ecx, dword [0x4244cc]
jl 0x401d6d
push 0x500
fstp st(0)
lea edx, [esi + 0x510]
push ebx
push edx
call fcn.0040a590
push 0x100
lea eax, [esi + 0x214]
push ebx
push eax
call fcn.0040a590
add esp, 0x18
mov dword [esi + 0x414], ebx
mov dword [esi + 4], ebx
cmp dword [0x4244cc], ebx
jle 0x401ddf
fld dword [0x41d3f0]
mov eax, dword [esi + 4]
fst dword [esi + eax*4 + 0x418]
add dword [esi + 4], edi
mov ecx, dword [esi + 4]
cmp ecx, dword [0x4244cc]
jl 0x401dc5
fstp st(0)
mov edx, dword [0x41d59c]
fld1
mov dword [esi + 0x458], edx
mov eax, dword [0x41d5a0]
mov dword [esi + 0x45c], eax
movzx ecx, byte [0x41d5a4]
mov byte [esi + 0x460], cl
mov edx, dword [0x41d59c]
mov dword [esi + 0x478], edx
mov eax, dword [0x41d5a0]
mov dword [esi + 0x47c], eax
movzx ecx, byte [0x41d5a4]
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 0x401e93
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 [0x4244cc], edi
mov eax, str.Devs6.cfg
je 0x401f16
mov eax, str.Devs1x8.cfg
push 0x41d580
push eax
call fcn.0040ac12
add esp, 8
cmp eax, ebx
mov dword [esp + 0xc], eax
jne 0x401f6a
cmp dword [0x4244cc], edi
mov eax, 0x41d558
je 0x401f3e
mov eax, 0x41d530
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.0040a9f0
add esp, 0x48
ret
push eax
lea ecx, [esi + 8]
push 0xff
push ecx
call fcn.0040b1b6
add esp, 0xc
test eax, eax
je 0x40267b
push ebp
lea eax, [esi + 8]
lea edx, [eax + 1]
jmp 0x401f90
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x401f90
sub eax, edx
cmp eax, 4
jb 0x40265c
push 0x41d52c
lea edi, [esi + 8]
push edi
call fcn.0040b170
add esp, 8
test eax, eax
je 0x401fcc
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 0x401fc0
mov al, byte [esi + 8]
cmp al, 0x3b
je 0x40265c
cmp al, 0x23
je 0x40265c
cmp al, 0x2f
je 0x40265c
lea eax, [esi + 8]
push 0x3d
push eax
call fcn.0040ad20
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x40265c
mov edi, 1
add ebx, edi
mov dword [esi + 4], edi
cmp dword [0x4244cc], edi
jl 0x40207d
mov ecx, dword [esi + 4]
push ecx
lea edx, [esp + 0x18]
push str.Color_d
push edx
call fcn.0040a975
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 0x402030
sub eax, edx
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 8]
push eax
call fcn.0040b0ab
add esp, 0xc
test eax, eax
je 0x402061
add dword [esi + 4], edi
mov ecx, dword [esi + 4]
cmp ecx, dword [0x4244cc]
jle 0x402011
jmp 0x40207d
mov edx, dword [esi + 4]
lea eax, [esi + edx*4 + 0xa0c]
push eax
lea ecx, [ebx + 1]
push 0x41d520
push ecx
call fcn.0040b08c
add esp, 0xc
mov dword [esi + 4], edi
cmp dword [0x4244cc], edi
jl 0x4020ef
mov edx, dword [esi + 4]
push edx
lea eax, [esp + 0x18]
push str.Scale_d
push eax
call fcn.0040a975
lea eax, [esp + 0x20]
add esp, 0xc
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4020a5
sub eax, edx
push eax
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 8]
push eax
call fcn.0040b0ab
add esp, 0xc
test eax, eax
je 0x4020d6
add dword [esi + 4], edi
mov edx, dword [esi + 4]
cmp edx, dword [0x4244cc]
jle 0x402088
jmp 0x4020ef
mov eax, dword [esi + 4]
lea ecx, [esi + eax*4 + 0x4cc]
push ecx
push 0x41d514
push ebx
call fcn.0040b08c
add esp, 0xc
mov dword [esi + 4], edi
cmp dword [0x4244cc], edi
jl 0x40216a
lea ebx, [ebx]
mov edx, dword [esi + 4]
push edx
lea eax, [esp + 0x18]
push str.StartRecordLevel_d
push eax
call fcn.0040a975
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 0x402120
sub eax, edx
push eax
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 8]
push eax
call fcn.0040b0ab
add esp, 0xc
test eax, eax
je 0x402151
add dword [esi + 4], edi
mov edx, dword [esi + 4]
cmp edx, dword [0x4244cc]
jle 0x402100
jmp 0x40216a
mov eax, dword [esi + 4]
lea ecx, [esi + eax*4 + 0x414]
push ecx
push 0x41d514
push ebx
call fcn.0040b08c
add esp, 0xc
mov dword [esi + 4], edi
cmp dword [0x4244cc], edi
jl 0x402217
lea esp, [esp]
mov edx, dword [esi + 4]
push edx
lea eax, [esp + 0x18]
push str.AverageNumber_d
push eax
call fcn.0040a975
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 0x4021a0
sub eax, edx
push eax
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 8]
push eax
call fcn.0040b0ab
add esp, 0xc
test eax, eax
je 0x4021d1
add dword [esi + 4], edi
mov edx, dword [esi + 4]
cmp edx, dword [0x4244cc]
jle 0x402180
jmp 0x402217
mov eax, dword [esi + 4]
lea ecx, [esi + eax*4 + 0x4ac]
push ecx
push 0x41d4ec
push ebx
call fcn.0040b08c
mov edx, dword [esi + 4]
lea eax, [esi + edx*4 + 0x4ac]
add esp, 0xc
cmp dword [eax], edi
jae 0x4021fa
mov dword [eax], edi
mov eax, dword [esi + 4]
cmp dword [esi + eax*4 + 0x4ac], 0x989680
lea eax, [esi + eax*4 + 0x4ac]
jbe 0x402217
mov dword [eax], 0x989680
push 9
push str.COMNumber
lea edi, [esi + 8]
push edi
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x402247
push 4
lea ecx, [esi + 0x108]
push ebx
push ecx
call fcn.0040af00
add esp, 0xc
mov byte [esi + 0x10c], 0
push 7
push str.DevName
push edi
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x40229c
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 0x402267
push 0x22
push edi
call fcn.0040ad20
push 0x22
push edi
mov ebp, eax
call fcn.0040ade0
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 0x402290
push 5
lea eax, [esi + 8]
push str.DevSN
push eax
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x4022fd
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 0x4022c0
push 0x22
lea ebp, [esi + 0x214]
push ebp
call fcn.0040ad20
push 0x22
push ebp
mov edi, eax
call fcn.0040ade0
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 0x4022f1
push 6
lea eax, [esi + 8]
push str.Folder
push eax
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x40234c
push 0x3a
push ebx
call fcn.0040ad20
push 0x5c
push ebx
mov edi, eax
call fcn.0040ade0
add esp, 0x10
test edi, edi
je 0x40234c
test eax, eax
je 0x40234c
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 0x402340
push 7
push str.Xwindow
lea ebp, [esi + 8]
push ebp
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x402378
lea edx, [esi + 0xa58]
push edx
push 0x41d4bc
push ebx
call fcn.0040b08c
add esp, 0xc
push 7
push str.Ywindow
push ebp
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x4023a1
lea eax, [esi + 0xa5c]
push eax
push 0x41d4bc
push ebx
call fcn.0040b08c
add esp, 0xc
push 0x10
push str.StartMeasureType
push ebp
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x4023ca
lea eax, [esi + 0x414]
push eax
push 0x41d4bc
push ebx
call fcn.0040b08c
add esp, 0xc
push 0xd
push str.MaxFileLength
push ebp
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x4023f3
lea eax, [esi + 0x49c]
push eax
push 0x41d4bc
push ebx
call fcn.0040b08c
add esp, 0xc
cmp dword [esi + 0x49c], 0xa
jae 0x402406
mov dword [esi + 0x49c], 0xa
push 0x12
push str.StartRecordPrequel
push ebp
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x40242f
lea eax, [esi + 0x4a0]
push eax
push 0x41d4bc
push ebx
call fcn.0040b08c
add esp, 0xc
mov eax, dword [esi + 0x4a0]
mov edi, 0x14
cmp eax, edi
jge 0x402446
mov dword [esi + 0x4a0], edi
jmp 0x402457
cmp eax, 0x7d00
jle 0x402457
mov dword [esi + 0x4a0], 0x7d00
push 0x10
push str.DelayRecordAfter
push ebp
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x402480
lea ecx, [esi + 0x4a4]
push ecx
push 0x41d4bc
push ebx
call fcn.0040b08c
add esp, 0xc
cmp dword [esi + 0x4a4], edi
jge 0x40248e
mov dword [esi + 0x4a4], edi
push 0xf
push str.StartRecordTime
push ebp
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x4024b7
lea edx, [esi + 0x4a8]
push edx
push 0x41d454
push ebx
call fcn.0040b08c
add esp, 0xc
push 8
push str.ICPstate
push ebp
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x4024e0
lea eax, [esi + 0xa50]
push eax
push 0x41d4bc
push ebx
call fcn.0040b08c
add esp, 0xc
push 0xc
push str.ReadChannels
push ebp
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x40254c
push 0x5b
push ebx
call fcn.0040ad20
push 0x5d
push ebx
mov edi, eax
call fcn.0040ad20
add esp, 0x10
test edi, edi
je 0x40254c
test eax, eax
je 0x40254c
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 0x402520
sub ecx, edi
cmp ecx, dword [0x4244cc]
jne 0x40254c
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 0x402540
push 0xf
lea eax, [esi + 8]
push str.AnalyzeChannels
push eax
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x4025bc
push 0x5b
push ebx
call fcn.0040ad20
push 0x5d
push ebx
mov edi, eax
call fcn.0040ad20
add esp, 0x10
test edi, edi
je 0x4025bc
test eax, eax
je 0x4025bc
mov byte [eax], 0
lea eax, [edi + 1]
mov ecx, eax
lea edi, [ecx + 1]
jmp 0x402590
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x402590
sub ecx, edi
cmp ecx, dword [0x4244cc]
jne 0x4025bc
lea edx, [esi + 0x458]
sub edx, eax
jmp 0x4025b0
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x4025b0
push 0xe
lea eax, [esi + 8]
push str.RecordChannels
push eax
call fcn.0040b0ab
add esp, 0xc
test eax, eax
jne 0x40265c
push 0x5b
push ebx
call fcn.0040ad20
push 0x5d
push ebx
mov edi, eax
call fcn.0040ad20
add esp, 0x10
test edi, edi
je 0x40262c
test eax, eax
je 0x40262c
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 0x402600
sub ecx, edi
cmp ecx, dword [0x4244cc]
jne 0x40262c
lea edx, [esi + 0x478]
sub edx, eax
jmp 0x402620
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x402620
xor eax, eax
mov dword [esi + 0x498], 0
cmp dword [0x4244cc], eax
jle 0x40265c
cmp byte [esi + eax + 0x478], 0x2b
jne 0x402651
add dword [esi + 0x498], 1
add eax, 1
cmp eax, dword [0x4244cc]
jl 0x402640
mov edx, dword [esp + 0x10]
push edx
lea eax, [esi + 8]
push 0xff
push eax
call fcn.0040b1b6
add esp, 0xc
test eax, eax
jne 0x401f85
pop ebp
mov eax, dword [esp + 0xc]
push eax
call fcn.0040ae80
mov ebx, 1
add esp, 4
mov dword [esi + 4], ebx
cmp dword [0x4244cc], ebx
jl 0x40270b
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 [0x4244cc]
jle 0x40269a
fstp st(0)
mov dword [esi + 4], 0
cmp dword [0x4244cc], 0
jle 0x402746
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 [0x4244cc]
jl 0x402721
mov ecx, dword [esp + 0x50]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040a9f0
add esp, 0x48
ret