Function at 0x41c89b
Capabilities:
Get disk information
Get file size
Identify system language via api
Read .ini file
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x52c
push ebx
push esi
push edi
xor edi, edi
mov dword [esp + 0x150], 0xbeaa
inc edi
mov dword [esp + 0x28c], ecx
mov dword [esp + 0x90], 0xffffffff
lea ecx, [esp + 0x2ec]
xor esi, esi
mov dword [esp + 0xe4], edi
mov dword [esp + 0x1dc], esi
push 3
mov dword [esp + 0x2a8], edx
call fcn.00413c51
mov dword [esp + 0xd0], esi
jmp 0x41c914
mov ecx, dword [esp + 0xd0]
mov eax, dword [esp + 0x2ec]
mov dword [eax + ecx*4], 0xc411
inc dword [esp + 0xd0]
cmp dword [esp + 0xd0], 3
jl 0x41c8f8
push 2
pop ebx
cmp dword [esp + 0x150], esi
je 0x41ca94
lea eax, [esp + 0x1dc]
mov dword [esp + 0x4c], 0xbbf9
push eax
lea eax, [esp + 0xe0]
mov dword [esp + 0xe0], 0xea0c8d46
push eax
lea eax, [esp + 0x54]
mov dword [esp + 0x28], esi
push eax
lea eax, [esp + 0x9c]
push eax
lea edx, [esp + 0x160]
lea ecx, [esp + 0xf4]
call fcn.0041c489
add esp, 0x10
mov dword [esp + 0x4c], ebx
cmp dword [esp + 0x4c], esi
jl 0x41caa2
mov edi, dword [esp + 0x2ec]
mov dword [esp + 0xc], esi
jmp 0x41c9a6
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x2c8], 0x30f13e0c
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x41c993
mov eax, dword [esp + 0x150]
cmp dword [esp + 0xdc], esi
jne 0x41c9c1
mov eax, dword [esp + 0x4c]
mov eax, dword [esp + 0xdc]
xor ecx, ecx
mov eax, dword [esp + 0x90]
mov eax, dword [esp + 0x4c]
cmp dword [edi + 4], eax
setge cl
mov dword [esp + 0x2cc], ecx
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x2ec]
mov edx, dword [esp + 0x2cc]
add edx, dword [eax + ecx*4]
xor ecx, ecx
mov eax, dword [esp + 0x4c]
cmp edx, eax
setl cl
cmp dword [esp + 0x4c], ecx
jne 0x41ca0f
mov eax, dword [esp + 0x2cc]
mov eax, dword [esp + 0x90]
xor ecx, ecx
mov eax, dword [esp + 0xe4]
mov eax, dword [esp + 0x4c]
mov eax, dword [esp + 0x4c]
mov eax, dword [esp + 0x2cc]
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0xe4]
cmp eax, 8
setle cl
xor edx, edx
mov dword [esp + 0xdc], ecx
mov ecx, dword [esp + 0xdc]
mov eax, dword [esp + 0x90]
add ecx, eax
mov eax, dword [esp + 0x4c]
cmp ecx, eax
setge dl
mov dword [esp + 0x90], edx
mov eax, dword [esp + 0x90]
mov eax, dword [esp + 0x4c]
mov eax, dword [esp + 0x1dc]
mov dword [esp + 0x20], 1
dec dword [esp + 0x4c]
jns 0x41c98d
xor edi, edi
inc edi
jmp 0x41caa2
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x90], eax
lea ecx, [esp + 0x2ec]
call fcn.00413d23
mov eax, 0x3556
mov dword [esp + 0x41c], eax
mov dword [esp + 0x420], eax
mov dword [esp + 0x424], eax
mov dword [esp + 0x428], eax
call fcn.00416a44
xor eax, eax
mov byte [esp + 0xbb], al
cmp byte [esp + 0xbb], al
je 0x41caee
push eax
push eax
call dword [sym.imp.USER32.dll_LoadIconA]
push ebx
lea ecx, [esp + 0x414]
call fcn.00413c51
xor eax, eax
mov dword [esp + 0x68], eax
jmp 0x41cb19
mov edx, dword [esp + 0x68]
mov ecx, dword [esp + 0x410]
mov dword [ecx + edx*4], 0x1713
inc dword [esp + 0x68]
cmp dword [esp + 0x68], ebx
jl 0x41cb03
mov dword [esp + 0x68], eax
jmp 0x41cb38
mov ecx, dword [esp + 0x68]
mov dword [esp + ecx*4 + 0x88], 3
inc dword [esp + 0x68]
cmp dword [esp + 0x68], edi
jl 0x41cb25
mov dword [esp + 0x88], edi
push 0xfffffffffffffff6
pop esi
cmp dword [esp + 0x88], eax
jl 0x41cbfb
mov dword [esp + 0x8c], 0x3880e033
mov dword [esp + 0x11c], esi
mov dword [esp + 0x2bc], 0xed562b99
mov ecx, dword [esp + 0x88]
mov ecx, dword [esp + 0x88]
mov ecx, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x11c], 0xb0bf2465
mov dword [esp + 0x8c], eax
jmp 0x41cbe5
mov ecx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x11c]
sub ecx, ebx
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x11c], ecx
mov ecx, dword [esp + 0x11c]
sub ecx, 0x411a
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x2bc], ecx
inc dword [esp + 0x8c]
cmp dword [esp + 0x8c], edi
jle 0x41cba9
dec dword [esp + 0x88]
jns 0x41cb55
lea ecx, [esp + 0x410]
call fcn.00413d23
call fcn.0041c58a
push 0xfffffffffffffffd
mov dword [esp + 0xf0], 0x57fd5464
xor eax, eax
pop ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x24], esi
mov dword [esp + 0xec], eax
jmp 0x41cc4c
mov dword [esp + 0x1ac], eax
mov dword [esp + 0x20], eax
dec dword [esp + 0x1ac]
cmp dword [esp + 0x20], eax
jne 0x41cc56
dec dword [esp + 0xec]
cmp dword [esp + 0xec], 0xfffffff3
jge 0x41cc2d
mov dword [esp + 0x10], 0x37d45db3
lea ecx, [esp + 0x388]
mov dword [esp + 0x34], 0xa11600d5
push 3
call fcn.00413c51
mov dword [esp + 0x2c], 0xa12afd77
xor eax, eax
mov dword [esp + 0xc], edi
mov dword [esp + 0x18], 0xbd791f9e
mov dword [esp + 0x24], 0xfffffffa
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c8], 0xb93b5720
mov dword [esp + 0x6c], eax
jmp 0x41ccb9
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x388]
mov dword [ecx + edx*4], edi
inc dword [esp + 0x6c]
cmp dword [esp + 0x6c], 3
jl 0x41cca7
mov dword [esp + 0x6c], eax
jmp 0x41ccd9
mov ecx, dword [esp + 0x6c]
mov dword [esp + ecx*4 + 0x2ac], 0xffffffff
inc dword [esp + 0x6c]
cmp dword [esp + 0x6c], 4
jl 0x41ccc6
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x10]
sub esi, ecx
mov ecx, dword [esp + 0x10]
neg esi
sbb esi, esi
inc esi
sub esi, ebx
neg esi
sbb esi, esi
xor edx, edx
inc esi
cmp esi, ecx
setg dl
xor ecx, ecx
imul edx, dword [esp + 0x10]
cmp ecx, edx
mov ecx, dword [esp + 0x388]
sbb edx, edx
neg edx
sub edx, 0x2db8e964
neg edx
sbb edx, edx
inc edx
mov dword [ecx + 8], edx
jne 0x41cd2d
mov ecx, eax
cmp dword [esp + 0x34], eax
je 0x41cd2f
mov ecx, edi
add ecx, 7
neg ecx
sbb ecx, ecx
xor ebx, ebx
neg ecx
mov dword [esp + 0x2c], ecx
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x10]
neg edx
cmp edx, ecx
mov ecx, dword [esp + 0x10]
setg bl
xor edx, edx
cmp ebx, ecx
setg dl
xor ecx, ecx
cmp edx, 0x99da9727
sete cl
mov dword [esp + 0x2b0], ecx
test ecx, ecx
jne 0x41cd76
mov edx, eax
cmp dword [esp + 0x10], eax
je 0x41cd78
mov edx, edi
xor ecx, ecx
cmp edx, 0xffffffff
mov edx, dword [esp + 0x10]
setg cl
sub edx, ecx
mov ecx, dword [esp + 0x10]
neg edx
sbb edx, edx
xor ebx, ebx
inc edx
cmp edx, ecx
mov ecx, dword [esp + 0x10]
setge bl
xor edx, edx
cmp ebx, ecx
setle dl
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x18], ecx
cmp dword [esp + 0x2b0], eax
je 0x41cec1
mov dword [esp + 0x14], 0xf21ddbc7
lea ecx, [esp + 0x294]
push 4
call fcn.00413c51
xor esi, esi
mov dword [esp + 0x7c], esi
jmp 0x41cdee
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x294]
mov dword [eax + ecx*4], 0xc927db40
inc dword [esp + 0x7c]
cmp dword [esp + 0x7c], 4
jl 0x41cdd8
mov dword [esp + 0x7c], esi
jmp 0x41ce0e
mov eax, dword [esp + 0x7c]
mov dword [esp + eax*4 + 0x4e4], 0xfffd
inc dword [esp + 0x7c]
cmp dword [esp + 0x7c], 3
jl 0x41cdfb
mov eax, dword [esp + 0x14]
xor edx, edx
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x2b0]
cmp eax, 0xc256
mov eax, dword [esp + 0x2b8]
mov esi, dword [esp + 0x294]
setl dl
xor ecx, ecx
cmp eax, edx
setge cl
xor ebx, ebx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x14]
imul ecx, dword [esi + 4]
mov eax, dword [esp + 0x18]
cmp ecx, eax
mov eax, dword [esp + 0x294]
setge bl
sub ebx, dword [esi + 4]
neg ebx
sbb ebx, ebx
xor edx, edx
inc ebx
cmp ebx, dword [eax + 0xc]
setne dl
xor ecx, ecx
mov dword [esp + 0x4ec], edx
mov eax, dword [esp + 0x2b4]
cmp edx, eax
mov eax, dword [esp + 0x2b0]
setg cl
xor edx, edx
sub ecx, eax
mov dword [esp + 0x2ac], ecx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x294]
cmp ecx, dword [eax]
lea ecx, [esp + 0x294]
setne dl
mov dword [esi + 4], edx
mov dword [esp + 0x18], edx
call fcn.00413d23
jmp 0x41cf2b
mov dword [esp + 0x24], 0xd949
mov dword [esp + 0x24], 0x9f010208
mov dword [esp + 0x24], 0x9523668f
mov dword [esp + 0x24], 0xfc3c737e
mov dword [esp + 0xc], eax
jmp 0x41cefa
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x12c], 0x81b93497
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x41cee7
dec dword [esp + 0x1c8]
mov byte [esp + 0xbf], al
cmp byte [esp + 0xbf], al
je 0x41cf2b
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_SaveDC]
lea ecx, [esp + 0x388]
call fcn.00413d23
push 3
pop esi
push esi
lea ecx, [esp + 0x430]
call fcn.00413c51
mov dword [esp + 0x24], 0x7a876e6b
xor eax, eax
mov dword [esp + 0x24], 0x36444696
push 7
pop ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x24], 0x813f1a07
mov dword [esp + 0x24], 5
mov dword [esp + 0x24], 0xfffffffc
mov dword [esp + 0x24], 0x7e08a110
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x300], ecx
mov dword [esp + 0x304], ecx
mov dword [esp + 0x308], ecx
mov dword [esp + 0x30c], ecx
mov dword [esp + 0x5c], eax
jmp 0x41cfc8
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x42c]
mov dword [ecx + edx*4], 0x9ff6
inc dword [esp + 0x5c]
cmp dword [esp + 0x5c], esi
jl 0x41cfb2
mov dword [esp + 0x5c], eax
jmp 0x41cfe7
mov eax, dword [esp + 0x5c]
mov dword [esp + eax*4 + 0x510], 6
inc dword [esp + 0x5c]
cmp dword [esp + 0x5c], esi
jl 0x41cfd4
inc dword [esp + 0x30c]
lea ecx, [esp + 0x42c]
call fcn.00413d23
mov dword [esp + 0x38], 0x860b4ffb
xor eax, eax
mov dword [esp + 0x34], 0x4f27d270
mov dword [esp + 0x10], 0x4a41637c
mov dword [esp + 0xc], 0xfffffff8
mov dword [esp + 0x28], 0xc655ef1c
mov dword [esp + 0x14], eax
jmp 0x41d03f
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x174], edi
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x41d030
push 2
pop ebx
mov dword [esp + 0x38], ebx
cmp dword [esp + 0x38], eax
jl 0x41d0d7
mov dword [esp + 0x20], 0x3b28
mov ecx, dword [esp + 0x38]
mov ecx, dword [esp + ecx*4 + 0x174]
mov ecx, dword [esp + 0x38]
cmp dword [esp + ecx*4 + 0x174], eax
jne 0x41d089
mov ecx, dword [esp + 0x38]
mov esi, eax
mov ecx, dword [esp + ecx*4 + 0x174]
cmp dword [esp + 0x34], eax
je 0x41d08b
mov esi, edi
mov ecx, dword [esp + 0x38]
mov ecx, dword [esp + ecx*4 + 0x174]
neg ecx
mov dword [esp + 0x10], ecx
je 0x41d0ab
mov ecx, dword [esp + 0x38]
cmp dword [esp + ecx*4 + 0x174], eax
jne 0x41d0ba
mov ecx, dword [esp + 0x38]
mov edx, eax
cmp dword [esp + ecx*4 + 0x174], eax
je 0x41d0bc
mov edx, edi
xor ecx, ecx
cmp esi, edx
setle cl
sub ecx, dword [esp + 0x20]
mov dword [esp + 0x178], ecx
dec dword [esp + 0x38]
jns 0x41d056
push 3
pop esi
mov ecx, dword [esp + 0x174]
cmp dword [esp + 0x10], eax
jne 0x41d104
cmp dword [esp + 0xc], eax
je 0x41d0ee
mov ecx, dword [esp + 0x38]
mov ecx, dword [esp + 0xc]
xor edx, edx
cmp ecx, edi
setl dl
mov dword [esp + 0x174], edx
mov edx, eax
jmp 0x41d106
mov edx, edi
xor ecx, ecx
cmp edx, 0x6fbc
setg cl
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x38], eax
cmp dword [esp + 0x38], eax
je 0x41d21f
mov dword [esp + 0x30], 0xfffffffe
mov dword [esp + 0x14], edi
mov dword [esp + 0x2c], eax
jmp 0x41d14c
mov ecx, dword [esp + 0x2c]
mov dword [esp + ecx*4 + 0x438], 0xdd14a140
inc dword [esp + 0x2c]
cmp dword [esp + 0x2c], ebx
jl 0x41d139
mov edx, dword [esp + 0x14]
xor ebx, ebx
mov ecx, dword [esp + 0xc]
cmp ecx, edx
mov ecx, dword [esp + 0x38]
setge bl
cmp ebx, 0xaa7fcf62
sbb edx, edx
xor ebx, ebx
inc edx
cmp ecx, edx
mov ecx, dword [esp + 0x14]
setge bl
xor edx, edx
cmp ebx, ecx
mov ecx, dword [esp + 0x38]
setle dl
sub edx, ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], edx
xor edx, edx
cmp dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x28]
setne dl
cmp edx, 0xfd6f6066
sbb edx, edx
xor ebx, ebx
inc edx
cmp edx, ecx
mov ecx, dword [esp + 0x30]
setg bl
xor edx, edx
cmp ebx, esi
setne dl
add ecx, 0x4378215c
add edx, ecx
xor ebx, ebx
mov ecx, dword [esp + 0x14]
cmp edx, ecx
mov ecx, dword [esp + 0x34]
setne bl
xor edx, edx
cmp ebx, ecx
setle dl
mov dword [esp + 0x38], edx
cmp dword [esp + 0x38], 0xc9e48991
jb 0x41d1ea
mov edx, edi
cmp dword [esp + 0xc], eax
jne 0x41d1ec
mov edx, eax
mov ecx, dword [esp + 0x30]
sub edx, ecx
sub edx, 0x1961266c
cmp dword [esp + 0x10], edx
jg 0x41d206
mov esi, edi
cmp dword [esp + 0x14], eax
jne 0x41d208
mov esi, eax
mov ecx, dword [esp + 0x14]
xor edx, edx
cmp esi, ecx
push 2
sete dl
mov dword [esp + 0x43c], edx
pop ebx
jmp 0x41d256
mov dword [esp + 0x38], ebx
cmp dword [esp + 0x38], eax
jl 0x41d256
mov byte [esp + 0xbc], al
cmp byte [esp + 0xbc], 0
je 0x41d250
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_EndPage]
xor eax, eax
dec dword [esp + 0x38]
jns 0x41d229
push dword [esp + 0x12c]
lea ecx, [esp + 0x4b8]
mov dword [esp + 0x23c], eax
push ecx
lea ecx, [esp + 0x4ac]
mov dword [esp + 0x244], eax
push ecx
xorps xmm0, xmm0
mov dword [esp + 0x24c], eax
push eax
lea ecx, [esp + 0x248]
movdqu xmmword [esp + 0x4b4], xmm0
call fcn.00415220
mov dword [esp + 0x20], 0x714a0256
xor eax, eax
mov dword [esp + 0x24], 0x276b87d0
mov dword [esp + 0x10], eax
jmp 0x41d2c6
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x2a0], 0x951ad386
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x41d2b3
mov dword [esp + 0x10], eax
jmp 0x41d2e1
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x3ec], eax
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jl 0x41d2d2
dec dword [esp + 0x3f0]
lea ecx, [esp + 0x2d4]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2a0], eax
mov dword [esp + 0x120], 0x90ac204e
mov dword [esp + 0x14c], 0x1ba028ea
push 4
call fcn.00413c51
xor esi, esi
mov dword [esp + 0x1a0], edi
mov dword [esp + 0x1cc], esi
lea ecx, [esp + 0x3a0]
push ebx
call fcn.00413c51
xor eax, eax
mov dword [esp + 0x60], eax
jmp 0x41d355
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x2d4]
mov dword [ecx + edx*4], eax
inc dword [esp + 0x60]
cmp dword [esp + 0x60], 4
jl 0x41d343
mov dword [esp + 0x60], eax
jmp 0x41d378
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x3a0]
mov dword [eax + ecx*4], 0x458d81c9
inc dword [esp + 0x60]
cmp dword [esp + 0x60], ebx
jl 0x41d362
lea eax, [esp + 0x2d4]
push eax
lea eax, [esp + 0x150]
push eax
lea edx, [esp + 0x1a8]
lea ecx, [esp + 0x128]
call fcn.0041c687
mov eax, dword [esp + 0x128]
xor edx, edx
mov eax, dword [esp + 0x1d4]
sub eax, 0x7d904387
mov dword [esp + 0x154], eax
mov eax, dword [esp + 0x154]
mov eax, dword [esp + 0x1d4]
mov eax, dword [esp + 0x128]
mov esi, dword [esp + 0x2dc]
pop ecx
pop ecx
mov ecx, dword [esi]
lea eax, [ecx + 1]
cmp eax, ecx
setle dl
xor eax, eax
cmp edx, 0x2570
mov edx, 0x4e2bba6d
setne al
xor ecx, ecx
mov dword [esi], eax
mov dword [esp + 0x120], edx
mov eax, dword [esp + 0x1a0]
cmp eax, edx
mov eax, dword [esp + 0x3a0]
setg cl
mov dword [eax], ecx
lea ecx, [esp + 0x3a0]
call fcn.00413d23
lea ecx, [esp + 0x2d4]
call fcn.00413d23
xor eax, eax
mov dword [esp + 0xc], eax
jmp 0x41d444
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x528], edi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x41d435
mov dword [esp + 0x18], ebx
mov dword [esp + 0x28], 0x3ea3a722
mov dword [esp + 0xc], eax
jmp 0x41d470
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0xc4], 0x3342eb9
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x41d45d
mov dword [esp + 0x18], edi
cmp dword [esp + 0x18], eax
jl 0x41d5e7
push dword [esp + 0x12c]
movdqa xmm0, xmmword [0xaa5910]
lea ecx, [esp + 0x498]
push ecx
lea ecx, [esp + 0x48c]
mov dword [esp + 0x3c], 0xfffffffa
push ecx
push eax
lea ecx, [esp + 0x280]
mov dword [esp + 0x280], eax
movdqu xmmword [esp + 0x494], xmm0
mov dword [esp + 0x284], eax
mov dword [esp + 0x288], eax
call fcn.00415220
mov dword [esp + 0x34], 0xd065835a
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0xc], 0
jmp 0x41d503
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x1c4], 0xc511ec1f
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x41d4f0
mov eax, dword [esp + 0x18]
xor ecx, ecx
mov eax, dword [esp + eax*4 + 0xc4]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0xc4]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0xc4]
cmp eax, 0x70b1
setne cl
cmp ecx, 0xf928
jne 0x41d547
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0xc4]
mov eax, dword [esp + 0xc8]
xor edx, edx
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0xc4]
mov eax, dword [esp + 0xc4]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + eax*4 + 0xc4]
mov eax, dword [esp + 0xc4]
cmp ecx, eax
sete dl
mov dword [esp + 0x34], edx
mov eax, dword [esp + 0x34]
mov eax, dword [esp + 0x270]
mov dword [esp + 0x1c4], edi
mov dword [eax + 0xc], edi
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0xc4]
inc eax
je 0x41d5ae
cmp dword [esp + 0x1c4], 0
je 0x41d5ae
mov ecx, edi
jmp 0x41d5b0
xor ecx, ecx
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0xc4], ecx
mov eax, dword [esp + 0x18]
sub ecx, eax
inc ecx
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x270]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x20], eax
call fcn.00413d23
dec dword [esp + 0x18]
push 0
pop eax
jns 0x41d484
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x238]
mov dword [esp + 0xc8], eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x238]
push 0xfffffffffffffff6
pop esi
mov dword [eax], esi
call fcn.00413d23
mov edi, dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
xor eax, eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x98], 0xb5cabfc3
mov dword [esp + 0x58], eax
jmp 0x41d659
mov byte [esp + 0xa6], al
cmp byte [esp + 0xa6], 0
je 0x41d655
push eax
push 0x1015
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call edi
xor eax, eax
dec dword [esp + 0x58]
cmp dword [esp + 0x58], 0xffffffea
jg 0x41d62b
mov dword [esp + 0x58], eax
cmp dword [esp + 0x58], 3
jl 0x41d7bd
mov dword [esp + 0xc], 0xffffffff
lea ecx, [esp + 0x3b8]
push ebx
call fcn.00413c51
xor eax, eax
mov dword [esp + 0xf4], eax
jmp 0x41d6a8
mov edx, dword [esp + 0xf4]
mov ecx, dword [esp + 0x3b8]
or dword [ecx + edx*4], 0xffffffff
inc dword [esp + 0xf4]
cmp dword [esp + 0xf4], ebx
jl 0x41d68f
mov dword [esp + 0xc], eax
cmp dword [esp + 0xc], esi
jge 0x41d7a0
xor ebx, ebx
inc ebx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x98], ecx
mov edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x3b8]
mov dword [ecx], edx
mov dword [esp + 0x98], eax
jmp 0x41d782
mov dword [esp + 0x2c], 0x66a92721
mov byte [esp + 0xb5], al
cmp byte [esp + 0xb5], 0
je 0x41d717
push eax
push eax
push 0x1a78
push 0x2127
push eax
call dword [sym.imp.USER32.dll_InsertMenuW]
xor eax, eax
mov dword [esp + 0x2c], ebx
cmp dword [esp + 0x2c], eax
jl 0x41d77b
mov dword [esp + 0x14], eax
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x14], eax
jl 0x41d775
mov dword [esp + 0x134], eax
mov dword [esp + 0x134], ebx
cmp dword [esp + 0x134], eax
jl 0x41d76f
mov byte [esp + 0xb7], al
cmp byte [esp + 0xb7], 0
je 0x41d766
push 0xeb4
push eax
push eax
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
xor eax, eax
dec dword [esp + 0x134]
jns 0x41d746
dec dword [esp + 0x14]
jns 0x41d72f
dec dword [esp + 0x2c]
jns 0x41d721
inc dword [esp + 0x98]
cmp dword [esp + 0x98], ebx
jle 0x41d6e9
dec dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x41d6c2
push 2
pop ebx
lea ecx, [esp + 0x3b8]
call fcn.00413d23
inc dword [esp + 0x58]
cmp dword [esp + 0x58], 3
jge 0x41d66f
xor eax, eax
push 9
pop ecx
mov dword [esp + 0x1e4], ecx
mov dword [esp + 0x1e8], ecx
mov dword [esp + 0x1ec], ecx
mov dword [esp + 0x1f0], ecx
mov dword [esp + 0xc], eax
jmp 0x41d7f5
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x200], 0x62fd
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x41d7e2
xor esi, esi
inc esi
mov dword [esp + 0x1f0], esi
cmp dword [esp + 0x1f0], eax
jl 0x41d988
mov dword [esp + 0x1b0], 0xffffffff
mov dword [esp + 0x1b4], 0xffffffff
mov dword [esp + 0x1b8], 0xffffffff
mov dword [esp + 0x1bc], 0xffffffff
mov dword [esp + 0x24], 0x4d07ddbf
mov dword [esp + 0x1bc], esi
cmp dword [esp + 0x1bc], eax
jl 0x41d978
push 4
lea ecx, [esp + 0x350]
call fcn.00413c51
push esi
lea ecx, [esp + 0x398]
call fcn.00413c51
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x70], eax
jmp 0x41d893
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x34c]
mov dword [ecx + edx*4], esi
inc dword [esp + 0x70]
cmp dword [esp + 0x70], 4
jl 0x41d881
mov dword [esp + 0x70], eax
jmp 0x41d8b6
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x394]
mov dword [ecx + edx*4], 0xbbd18838
inc dword [esp + 0x70]
cmp dword [esp + 0x70], esi
jl 0x41d8a0
mov ecx, dword [esp + 0x1bc]
cmp dword [esp + ecx*4 + 0x200], eax
je 0x41d911
mov ecx, dword [esp + 0x1bc]
xor ebx, ebx
mov edx, dword [esp + ecx*4 + 0x200]
mov ecx, dword [esp + 0x394]
mov dword [ecx], edx
mov ecx, dword [esp + 0x1f0]
cmp ecx, edx
mov ecx, dword [esp + 0x34c]
mov edx, 0xbfb66feb
setge bl
mov dword [ecx + 4], edx
xor ecx, ecx
cmp ebx, edx
setle cl
imul ecx, ecx, 0xce3d
test ecx, ecx
jne 0x41d913
mov esi, eax
mov ecx, dword [esp + 0x1bc]
xor edx, edx
mov ecx, dword [esp + ecx*4 + 0x200]
cmp esi, ecx
mov ecx, dword [esp + 0x1f0]
sete dl
mov ecx, dword [esp + ecx*4 + 0x200]
sub ecx, edx
jne 0x41d943
cmp dword [esp + 0x1bc], eax
je 0x41d94a
mov ecx, dword [esp + 0x1f0]
mov dword [esp + 0x20], eax
lea ecx, [esp + 0x394]
call fcn.00413d23
lea ecx, [esp + 0x34c]
call fcn.00413d23
dec dword [esp + 0x1bc]
push 1
pop esi
jns 0x41d85a
xor eax, eax
dec dword [esp + 0x1f0]
jns 0x41d812
push 2
pop ebx
mov dword [esp + 0xc], 0xfffffffd
mov dword [esp + 0x144], 0xf6f97812
mov dword [esp + 0x30], 0xea21
mov dword [esp + 0x14], 0x3f5cfeb4
mov dword [esp + 0xc], eax
jmp 0x41d9c0
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x184], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x41d9b1
xor ebx, ebx
mov dword [esp + 0xc], 0xfffffffe
mov ecx, dword [esp + 0xc]
cmp ecx, 0x91ba
mov ecx, dword [esp + 0x144]
setg bl
xor edx, edx
cmp ebx, ecx
mov ecx, 0xf2f34e40
setge dl
cmp ecx, edx
sbb ecx, ecx
inc ecx
imul ecx, ecx, 0x8ffca
test ecx, ecx
je 0x41da36
mov dword [esp + 0x34], 0xfffffffb
xor edx, edx
mov eax, dword [esp + 0x30]
mov eax, dword [esp + 0x184]
mov eax, dword [esp + 0x34]
mov eax, dword [esp + 0x34]
cmp eax, 2
mov eax, dword [esp + 0x30]
setne dl
xor ecx, ecx
cmp edx, eax
setne cl
mov dword [esp + 0x14], ecx
jmp 0x41db7e
mov dword [esp + 0x54], 0x3ede
mov dword [esp + 0x78], 0x4d3380d4
mov ecx, dword [esp + 0x54]
mov ecx, dword [esp + 0x54]
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x54]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x78], ecx
cmp dword [esp + 0x78], eax
jne 0x41da6c
mov ecx, dword [esp + 0x54]
mov ecx, dword [esp + 0x54]
cmp dword [esp + 0x184], eax
je 0x41db3a
mov dword [esp + 0xc], eax
jmp 0x41da96
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x310], 0xfffffff6
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x41da83
cmp dword [esp + 0x31c], eax
jne 0x41dadc
mov ecx, dword [esp + 0x31c]
cmp ecx, dword [esp + 0x184]
jle 0x41dabe
mov ecx, eax
cmp dword [esp + 0x78], eax
je 0x41dac0
mov ecx, esi
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x14], eax
je 0x41dad5
mov ecx, esi
cmp dword [esp + 0x144], eax
jne 0x41dad7
mov ecx, eax
dec ecx
mov ecx, eax
je 0x41dade
mov ecx, esi
cmp ecx, 9
sbb ecx, ecx
neg ecx
sub ecx, 0xc87c
je 0x41daf4
mov ecx, dword [esp + 0x31c]
mov ecx, dword [esp + 0x184]
mov ecx, dword [esp + 0x54]
mov ecx, dword [esp + 0x310]
mov esi, dword [esp + 0x78]
mov ecx, dword [esp + 0x78]
neg esi
sbb esi, esi
xor edx, edx
neg esi
neg esi
cmp esi, ecx
mov ecx, dword [esp + 0x310]
setne dl
sub edx, ecx
jne 0x41db31
cmp dword [esp + 0x184], eax
je 0x41db34
xor eax, eax
inc eax
mov dword [esp + 0x78], eax
jmp 0x41db7e
mov dword [esp + 0x1a8], 0x266a
mov dword [esp + 0x78], eax
jmp 0x41db58
cmp dword [esp + 0x1a8], eax
jne 0x41db5f
inc dword [esp + 0x78]
cmp dword [esp + 0x78], 0xa
jl 0x41db4b
mov dword [esp + 0x54], eax
jmp 0x41db77
mov eax, dword [esp + 0x1a8]
mov dword [esp + 0x144], eax
inc dword [esp + 0x54]
cmp dword [esp + 0x54], 0x23
jg 0x41db65
push 4
pop esi
mov dword [esp + 0x2c], 0xffffffff
lea ecx, [esp + 0x404]
push esi
call fcn.00413c51
xor eax, eax
mov dword [esp + 0xfc], eax
jmp 0x41dbb9
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x404]
mov dword [ecx + edx*4], esi
inc dword [esp + 0xfc]
cmp dword [esp + 0xfc], esi
jl 0x41dba1
mov byte [esp + 0xb9], al
cmp byte [esp + 0xb9], al
je 0x41dbe4
push eax
push 0x1a3e
push eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor eax, eax
mov byte [esp + 0xbd], al
cmp byte [esp + 0xbd], 0
je 0x41dc00
push 0x681
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
lea ecx, [esp + 0x404]
call fcn.00413d23
push dword [esp + 0x12c]
movdqa xmm0, xmmword [0xaa58c0]
lea ecx, [esp + 0x4a8]
push ecx
xor eax, eax
lea ecx, [esp + 0x49c]
push ecx
push eax
lea ecx, [esp + 0x230]
mov dword [esp + 0x230], eax
movdqu xmmword [esp + 0x4a4], xmm0
mov dword [esp + 0x234], eax
mov dword [esp + 0x238], eax
call fcn.00415220
mov dword [esp + 0x28], 0x39d98273
xor esi, esi
inc esi
xor eax, eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x30], 6
mov dword [esp + 0x18], 0xfffffffc
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 0xc], eax
jmp 0x41dc9e
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x104], 0xe836ea0e
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x41dc8b
mov ecx, dword [esp + 0x14]
xor ebx, ebx
cmp ecx, esi
mov ecx, dword [esp + 0x10]
setg bl
xor edx, edx
cmp ebx, ecx
setle dl
cmp edx, dword [esp + 0x14]
je 0x41dcc8
mov edx, eax
cmp dword [esp + 0x10], eax
je 0x41dcca
mov edx, esi
mov ecx, 0x4087a912
sub ecx, edx
push 0xfffffffffffffff7
pop edx
cmp edx, ecx
sbb ecx, ecx
neg ecx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x30]
cmp ecx, dword [esp + 0x14]
je 0x41dcf0
cmp dword [esp + 0x10], eax
jne 0x41dcf0
mov esi, eax
mov ecx, dword [esp + 0x10]
xor edx, edx
cmp esi, ecx
setne dl
sub edx, dword [esp + 0x18]
neg edx
sbb edx, edx
xor ebx, ebx
inc edx
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
cmp edx, ecx
mov ecx, dword [esp + 0x14]
setge bl
xor edx, edx
cmp ebx, ecx
setle dl
xor esi, esi
inc esi
cmp edx, dword [esp + 0x14]
je 0x41de0e
mov dword [esp + 0x14], esi
push 2
pop ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x28], esi
mov dword [esp + 0x18], eax
cmp dword [esp + 0x18], eax
jl 0x41deaa
mov dword [esp + 0x34], 0xe785e8a7
mov dword [esp + 0x28], 0xf4a3ca5a
mov dword [esp + 0x10], eax
jmp 0x41dd99
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + ecx*4 + 0x104]
mov ecx, dword [esp + 0x18]
mov dword [esp + ecx*4 + 0x104], edx
mov byte [esp + 0x1f], al
cmp byte [esp + 0x1f], 0
je 0x41dd95
push eax
push eax
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
xor eax, eax
inc dword [esp + 0x10]
cmp dword [esp + 0x10], eax
jle 0x41dd6a
cmp dword [esp + 0x14], ebx
je 0x41ddbc
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + ecx*4 + 0x104]
mov ecx, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + ecx*4 + 0x104]
cmp ecx, dword [esp + 0x104]
jle 0x41ddec
mov ecx, eax
cmp dword [esp + 0x28], eax
je 0x41ddee
mov ecx, esi
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x28]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0xc], ecx
dec dword [esp + 0x18]
jns 0x41dd54
jmp 0x41deaa
mov dword [esp + 0x30], esi
mov dword [esp + 0x14], 0x3ae864ea
mov dword [esp + 0x14], eax
jmp 0x41de33
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x460], 0x2fb88b70
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 2
jl 0x41de20
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x30]
je 0x41de81
mov ecx, dword [esp + 0x10]
add ecx, ecx
dec ecx
neg ecx
sbb ecx, ecx
xor ebx, ebx
inc ecx
cmp ecx, 0xffffffff
mov ecx, dword [esp + 0x30]
setge bl
xor edx, edx
cmp ebx, ecx
setl dl
mov dword [esp + 0x14], edx
cmp dword [esp + 0x14], 0x702
jl 0x41de79
cmp dword [esp + 0x14], eax
jne 0x41de79
mov ecx, eax
cmp ecx, dword [esp + 0xc]
mov ecx, esi
jle 0x41de83
mov ecx, eax
mov dword [esp + 0x464], ecx
mov byte [esp + 0xb8], al
cmp byte [esp + 0xb8], al
je 0x41deaa
push eax
push eax
push 0x17d5
push eax
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
xor eax, eax
mov dword [esp + 0x14], 0x2f63069b
push 0xfffffffffffffffd
pop ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x28], 6
mov dword [esp + 0x28], 0x75761ac7
mov dword [esp + 0x20], 0x6e523240
mov dword [esp + 0xc], eax
jmp 0x41deee
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x148], 0xfffffffc
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x41dedb
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
neg esi
mov ecx, dword [esp + 0x10]
sbb esi, esi
xor ebx, ebx
neg esi
cmp edx, ecx
setl bl
mov dword [esp + 0x28], ebx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x148], ecx
mov ecx, dword [esp + 0x148]
neg ecx
sbb ecx, ecx
xor edx, edx
neg ecx
cmp esi, ecx
mov ecx, dword [esp + 0x10]
sete dl
xor ebx, ebx
cmp edx, ecx
mov ecx, dword [esp + 0x10]
setne bl
xor edx, edx
cmp ebx, ecx
mov ecx, dword [esp + 0x10]
setl dl
imul esi, edx, 0xffffada9
sub esi, 0x81de
neg esi
sbb esi, esi
xor edx, edx
inc esi
cmp esi, ecx
setge dl
xor ebx, ebx
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x148]
mov ecx, dword [esp + 0x10]
cmp edx, ecx
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
setle bl
mov dword [esp + 0x20], ebx
xor ebx, ebx
cmp edx, ecx
mov ecx, 0xd77dfcc8
setle bl
sub ebx, dword [esp + 0x20]
add ebx, dword [esp + 0x10]
imul ebx, dword [esp + 0x10]
cmp ecx, ebx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x20], ecx
mov byte [esp + 0x1f], al
cmp byte [esp + 0x1f], 0
je 0x41dfca
push eax
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
xor esi, esi
push esi
push esi
call dword [sym.imp.USER32.dll_DialogBoxParamA]
xor eax, eax
mov dword [esp + 0x34], 0xfffffffd
mov dword [esp + 0xc], eax
jmp 0x41dfeb
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x168], 0x82a1
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x41dfd8
mov dword [esp + 0x18c], 0x24039b64
mov dword [esp + 0x2c0], 0x42b9193c
mov byte [esp + 0x97], al
cmp byte [esp + 0x97], 0
je 0x41e022
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
xor eax, eax
cmp dword [esp + 0x18c], eax
je 0x41e04f
mov dword [esp + 0x24], 1
mov dword [esp + 0x24], 0xfffffff8
mov dword [esp + 0x190], 0xf55e00fe
inc dword [esp + 0x190]
jmp 0x41e094
mov dword [esp + 0x250], eax
mov dword [esp + 0xc], eax
jmp 0x41e06f
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x4f0], 0xfffffff7
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x41e05c
lea eax, [esp + 0x250]
push eax
lea edx, [esp + 0x2c4]
lea ecx, [esp + 0x190]
call fcn.0041c0e6
pop ecx
xor eax, eax
cmp dword [esp + 0x2c], eax
je 0x41e0c0
mov edx, dword [esp + 0x16c]
mov ecx, dword [esp + 0x220]
mov dword [ecx + 0xc], edx
mov ecx, dword [esp + 0x16c]
imul ecx, dword [esp + 0x2c]
cmp edx, ecx
jge 0x41e0c0
xor esi, esi
inc esi
jmp 0x41e0c2
mov esi, eax
mov ecx, dword [esp + 0x16c]
xor ebx, ebx
mov edx, dword [esp + 0x168]
mov ecx, dword [esp + 0x16c]
cmp edx, ecx
mov ecx, dword [esp + 0x16c]
setl bl
xor edx, edx
cmp ebx, ecx
setl dl
xor ecx, ecx
cmp esi, edx
setge cl
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x16c]
add edx, ecx
xor ecx, ecx
cmp edx, 0x4cbe
setle cl
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x14]
sub edx, ecx
neg edx
sbb edx, edx
inc edx
mov dword [esp + 0x34], edx
mov ecx, dword [esp + 0x16c]
cmp dword [esp + 0x34], ecx
jne 0x41e4ae
push dword [esp + 0x12c]
movdqa xmm0, xmmword [0xaa5860]
lea ecx, [esp + 0x4c8]
push ecx
lea ecx, [esp + 0x4bc]
mov dword [esp + 0x3c], 0x44ad72d7
push ecx
mov dword [esp + 0x34], 0xa278c007
lea ecx, [esp + 0x250]
mov dword [esp + 0x34], 0x2189f42c
mov dword [esp + 0x34], 0xd65f4e26
push eax
movdqu xmmword [esp + 0x4c4], xmm0
mov dword [esp + 0x254], eax
mov dword [esp + 0x258], eax
mov dword [esp + 0x25c], eax
call fcn.00415220
xor eax, eax
xor esi, esi
mov dword [esp + 0xc], eax
inc esi
jmp 0x41e1c3
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0xc0], 0x2a4f
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x41e1b0
mov ecx, dword [esp + 0xc0]
mov edx, 0x98e64e6d
mov dword [esp + 0x34], ecx
xor ebx, ebx
mov ecx, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x28]
sub edx, ecx
imul edx, dword [esp + 0xc0]
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
sub edx, ecx
mov ecx, dword [esp + 0xc0]
cmp ecx, edx
setle bl
xor ecx, ecx
cmp ebx, 0xdac7
setl cl
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x28], eax
je 0x41e235
mov ecx, esi
cmp dword [esp + 0xc0], eax
jne 0x41e237
mov ecx, eax
mov eax, dword [esp + 0x244]
mov dword [eax], ecx
lea ecx, [esp + 0x244]
call fcn.00413d23
mov dword [esp + 0x180], 0x1c9b6cd0
xor eax, eax
mov dword [esp + 0x1a4], 0x1aa2910a
mov dword [esp + 0x48], 0xfffffffc
mov dword [esp + 0xa0], 0x49cec79e
mov dword [esp + 0x128], 0x16501874
mov dword [esp + 0x10c], 0xffffffff
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x48]
neg edx
sbb edx, edx
xor ebx, ebx
neg edx
cmp edx, ecx
mov ecx, dword [esp + 0x48]
mov edx, 0x8e92eda8
sete bl
sub ebx, ecx
mov ecx, dword [esp + 0x48]
add ecx, ebx
cmp edx, ecx
mov edx, dword [esp + 0x48]
sbb ecx, ecx
inc ecx
sub edx, ecx
neg edx
sbb edx, edx
xor ebx, ebx
inc edx
mov dword [esp + 0x128], edx
mov edx, dword [esp + 0x128]
mov ecx, dword [esp + 0x48]
cmp edx, ecx
setg bl
cmp ebx, dword [esp + 0x48]
jge 0x41e2ee
mov edx, eax
cmp dword [esp + 0x48], eax
je 0x41e2f0
mov edx, esi
mov ecx, dword [esp + 0x48]
mov dword [esp + 0xa0], ecx
mov ecx, dword [esp + 0xa0]
sub ecx, 2
cmp ecx, edx
jg 0x41e314
mov ecx, eax
cmp dword [esp + 0xa0], eax
je 0x41e316
mov ecx, esi
cmp ecx, dword [esp + 0x48]
jle 0x41e327
mov edx, eax
cmp dword [esp + 0xa0], eax
je 0x41e329
mov edx, esi
mov ecx, dword [esp + 0x48]
xor ebx, ebx
add edx, 3
cmp edx, ecx
setne bl
mov dword [esp + 0x10c], ebx
cmp dword [esp + 0x10c], eax
je 0x41e38b
mov dword [esp + 0x268], 0xc2a41b87
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x128], ecx
cmp dword [esp + 0x128], eax
jne 0x41e374
mov eax, dword [esp + 0x268]
mov eax, dword [esp + 0xa0]
mov eax, dword [esp + 0x48]
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x10c], eax
jmp 0x41e455
mov dword [esp + 0x20], esi
mov dword [esp + 0xc], eax
jmp 0x41e3a4
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x130], esi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x41e395
mov edx, dword [esp + 0x130]
xor ebx, ebx
mov ecx, dword [esp + 0x48]
add edx, 0x4fbfd527
cmp ecx, edx
mov ecx, dword [esp + 0x130]
setne bl
neg ecx
cmp ecx, ebx
jg 0x41e3d7
mov ecx, eax
cmp dword [esp + 0x14], eax
je 0x41e3d9
mov ecx, esi
cmp ecx, dword [esp + 0x14]
jne 0x41e3e8
cmp dword [esp + 0x130], eax
jne 0x41e3f0
mov edx, eax
cmp dword [esp + 0x48], eax
je 0x41e3f2
mov edx, esi
mov ecx, dword [esp + 0x130]
add ecx, 0xecce
add ecx, edx
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x14], 0x9991
jg 0x41e417
mov ecx, esi
cmp dword [esp + 0x20], eax
jne 0x41e419
mov ecx, eax
mov dword [esp + 0xa0], ecx
cmp dword [esp + 0xa0], eax
je 0x41e431
mov ecx, esi
cmp dword [esp + 0x48], eax
jne 0x41e433
mov ecx, eax
mov dword [esp + 0x10c], ecx
mov byte [esp + 0xb3], al
cmp byte [esp + 0xb3], al
je 0x41e455
push 0xc51
call dword [sym.imp.USER32.dll_GetKeyboardType]
mov dword [esp + 0x1c0], esi
call fcn.00416716
mov dword [esp + 0x2a8], 0xffffffff
call fcn.00416c06
mov eax, dword [esp + 0x180]
xor edx, edx
mov dword [esp + 0x1a4], eax
mov ecx, dword [esp + 0x1a4]
mov eax, dword [esp + 0x180]
cmp ecx, eax
setge dl
mov dword [esp + 0x1c0], edx
mov eax, dword [esp + 0x1c0]
mov dword [esp + 0x2a8], eax
jmp 0x41ed09
mov dword [esp + 0x24], 0x52276c1f
mov byte [esp + 0x1f], al
cmp byte [esp + 0x1f], 0
je 0x41e6b1
mov dword [esp + 0x2c], 3
mov dword [esp + 0x10], 0xba86ba47
mov dword [esp + 0x20], 0xade0980d
mov dword [esp + 0x330], 0xffffffff
mov dword [esp + 0x334], 0xffffffff
mov dword [esp + 0x338], 0xffffffff
mov dword [esp + 0x33c], 0xffffffff
mov dword [esp + 0x50], 9
mov dword [esp + 0x2c], 0xffffffee
jmp 0x41e69c
mov dword [esp + 0x30], 0x22e6
xor edx, edx
mov dword [esp + 0x18], 0x9900
mov dword [esp + 0x28], 0xffffffff
mov ecx, dword [esp + 0x30]
cmp ecx, 0xffff
setne dl
add edx, dword [esp + 0x18]
imul ecx, edx, 0xfffffff8
test ecx, ecx
je 0x41e57f
mov byte [esp + 0x96], al
cmp byte [esp + 0x96], 0
je 0x41e698
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_RectVisible]
jmp 0x41e696
mov dword [esp + 0x14], 0xc9bf5e4d
mov dword [esp + 0x40], 0xffffffff
mov dword [esp + 0xc], eax
jmp 0x41e5a8
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x44c], 0x6ab2aee5
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x41e595
cmp dword [esp + 0x10], eax
jne 0x41e6a7
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x334], ecx
test ecx, ecx
je 0x41e61f
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x334], 0x551b32e2
mov dword [esp + 0x28], eax
cmp dword [esp + 0x28], eax
je 0x41e5e5
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
xor ebx, ebx
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
sub edx, ecx
add edx, dword [esp + 0x10]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
cmp edx, ecx
setle bl
sub ebx, 0x9c2b
je 0x41e61f
xor esi, esi
inc esi
jmp 0x41e621
mov esi, eax
mov edx, dword [esp + 0x10]
mov dword [esp + 0x44c], edx
mov ecx, dword [esp + 0x20]
sub edx, ecx
cmp edx, esi
jl 0x41e64f
mov byte [esp + 0xb4], al
cmp byte [esp + 0xb4], 0
je 0x41e698
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
jmp 0x41e696
mov byte [esp + 0x9f], al
cmp byte [esp + 0x9f], 0
je 0x41e671
push eax
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_SetPropA]
xor eax, eax
mov byte [esp + 0xba], al
cmp byte [esp + 0xba], 0
je 0x41e698
push 0x71
push 0xf76
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_SetWindowLongW]
xor eax, eax
inc dword [esp + 0x2c]
cmp dword [esp + 0x2c], 0xfffffff2
jge 0x41e51e
push eax
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
xor eax, eax
xor ebx, ebx
mov dword [esp + 0x10], 8
inc ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x50], 0x108fa7ad
mov dword [esp + 0x10], 0x10
cmp dword [esp + 0x10], 0xffffffee
jle 0x41e74d
push 2
pop edx
mov dword [esp + 0x30], 3
mov dword [esp + 0x40], 6
mov dword [esp + 0x20], 9
mov dword [esp + 0xc], eax
jmp 0x41e707
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x27c], edx
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edx
jl 0x41e6f8
mov ecx, dword [esp + 0x40]
cmp dword [esp + 0x280], ecx
jge 0x41e725
mov ecx, ebx
cmp dword [esp + 0x280], eax
jne 0x41e727
mov ecx, eax
mov dword [esp + 0x27c], ecx
sub ecx, dword [esp + 0x30]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x20], ebx
dec dword [esp + 0x10]
cmp dword [esp + 0x10], 0xffffffee
jg 0x41e6da
mov dword [esp + 0x10], 0xfffffffb
jmp 0x41e869
mov dword [esp + 0x50], eax
mov dword [esp + 0xc], eax
jmp 0x41e773
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x320], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x41e764
mov byte [esp + 0x1f], al
cmp byte [esp + 0x1f], 0
je 0x41e78e
push eax
call dword [sym.imp.USER32.dll_CharUpperW]
xor eax, eax
mov dword [esp + 0x328], eax
jmp 0x41e857
mov dword [esp + 0xc], 0xfffffff7
mov dword [esp + 0x50], 0x67684abf
mov dword [esp + 0x50], 0x18158fb5
mov dword [esp + 0xc], eax
jmp 0x41e7cb
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x51c], 0x49f2b782
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x41e7b8
mov dword [esp + 0xc], 0xffffffed
cmp dword [esp + 0xc], 0xffffffea
jg 0x41e850
xor esi, esi
push 4
lea ecx, [esp + 0x2e4]
call fcn.00413c51
mov dword [esp + 0x114], esi
jmp 0x41e816
mov ecx, dword [esp + 0x114]
mov eax, dword [esp + 0x2e0]
mov dword [eax + ecx*4], 0x97ab83de
inc dword [esp + 0x114]
cmp dword [esp + 0x114], 4
jl 0x41e7fa
lea ecx, [esp + 0x2e0]
cmp dword [esp + 0x10], esi
jne 0x41e849
dec dword [esp + 0x328]
cmp dword [esp + 0x328], 0xfffffffc
jg 0x41e79a
dec dword [esp + 0x10]
cmp dword [esp + 0x10], 0xffffffed
je 0x41e75a
mov dword [esp + 0x14], 3
cmp dword [esp + 0x14], eax
jl 0x41ed09
mov dword [esp + 0x50], 0x1a1f
mov dword [esp + 0x2c], eax
jmp 0x41ecf4
lea ecx, [esp + 0x220]
call fcn.00413d23
xor eax, eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x154], 0xb5cabfc3
mov dword [esp + 0x80], eax
jmp 0x41ed5d