Function at 0x421325
Capabilities:
Get file size
Identify system language via api
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x27c
push ebx
push esi
push edi
mov dword [esp + 0x80], edx
mov dword [esp + 0x4c], ecx
call fcn.00421123
push 3
pop esi
mov dword [esp + 0x24], 0xffffffff
lea ecx, [esp + 0x1c4]
mov dword [esp + 0x24], 0xfffffffd
mov dword [esp + 0x24], 0x20fe6e32
push esi
call fcn.00413c51
mov dword [esp + 0x24], 0xffffffff
lea ecx, [esp + 0x1b8]
mov dword [esp + 0x24], 0x796840e
push esi
call fcn.00413c51
mov dword [esp + 0x24], 0xffffffff
push 1
mov dword [esp + 0xb4], 0xffff
mov dword [esp + 0x40], 0
pop ebx
jmp 0x4213bb
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x1c4]
mov dword [eax + ecx*4], ebx
inc dword [esp + 0x3c]
cmp dword [esp + 0x3c], esi
jl 0x4213a9
mov dword [esp + 0x3c], 0
jmp 0x4213e1
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x1b8]
mov dword [eax + ecx*4], 0xab1d
inc dword [esp + 0x3c]
cmp dword [esp + 0x3c], esi
jl 0x4213cb
inc dword [esp + 0xb0]
lea ecx, [esp + 0x1b8]
call fcn.00413d23
lea ecx, [esp + 0x1c4]
call fcn.00413d23
mov eax, 0x3556
mov dword [esp + 0x1f4], eax
mov dword [esp + 0x1f8], eax
mov dword [esp + 0x1fc], eax
mov dword [esp + 0x200], eax
call fcn.00416c06
mov dword [esp + 0x38], 8
mov dword [esp + 0x24], ebx
push 2
mov dword [esp + 0x28], 0x108fa7ad
mov dword [esp + 0x3c], 0x10
pop ecx
jmp 0x4214bc
mov dword [esp + 0x10], esi
mov dword [esp + 0x28], 6
mov dword [esp + 0x30], 9
mov dword [esp + 0x1c], 0
jmp 0x42147a
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0xfc], ecx
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], ecx
jl 0x42146b
mov eax, dword [esp + 0x100]
cmp eax, dword [esp + 0x28]
jge 0x42149b
cmp dword [esp + 0x100], 0
je 0x42149b
mov eax, ebx
jmp 0x42149d
xor eax, eax
mov dword [esp + 0xfc], eax
sub eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x30], ebx
dec dword [esp + 0x38]
cmp dword [esp + 0x38], 0xffffffee
jg 0x42144d
push 0xffffffffffffffed
pop edi
push 0xfffffffffffffff7
mov dword [esp + 0x3c], 0xfffffffb
pop ecx
jmp 0x4215eb
mov dword [esp + 0x24], 0
mov dword [esp + 0x1c], 0
jmp 0x4214fb
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x16c], 0
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 4
jl 0x4214e8
mov byte [esp + 0x53], 0
cmp byte [esp + 0x53], 0
je 0x421519
push 0
call dword [sym.imp.USER32.dll_CharUpperW]
push 0xfffffffffffffff7
pop ecx
mov dword [esp + 0x174], 0
jmp 0x4215d9
mov dword [esp + 0x70], ecx
mov dword [esp + 0x24], 0x67684abf
mov dword [esp + 0x24], 0x18158fb5
mov dword [esp + 0x1c], 0
jmp 0x42155a
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x254], 0x49f2b782
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], esi
jl 0x421547
mov dword [esp + 0x70], edi
cmp dword [esp + 0x70], 0xffffffea
jg 0x4215d2
push 4
lea ecx, [esp + 0x148]
call fcn.00413c51
mov dword [esp + 0x64], 0
jmp 0x421599
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x144]
mov dword [eax + ecx*4], 0x97ab83de
inc dword [esp + 0x64]
cmp dword [esp + 0x64], 4
jl 0x421583
cmp dword [esp + 0x38], 0
lea ecx, [esp + 0x144]
jne 0x4215ca
mov eax, dword [esp + 0x144]
inc dword [eax + 8]
call fcn.00413d23
dec dword [esp + 0x70]
cmp dword [esp + 0x70], 0xffffffea
jle 0x42156b
jmp 0x4215cf
call fcn.00413d23
push 0xfffffffffffffff7
pop ecx
dec dword [esp + 0x174]
cmp dword [esp + 0x174], 0xfffffffc
jg 0x421529
dec dword [esp + 0x38]
cmp dword [esp + 0x38], edi
je 0x4214d6
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
mov byte [esp + 0x23], 0
cmp byte [esp + 0x23], 0
je 0x4217e9
push 0x18a2
push 0
push 0x6abb
push 0x4946
call fcn.004245e4
mov dword [esp + 0x28], esi
add esp, 0x10
mov dword [esp + 0x10], 0xba86ba47
mov dword [esp + 0x28], 0xade0980d
mov dword [esp + 0x15c], 0xffffffff
mov dword [esp + 0x160], 0xffffffff
mov dword [esp + 0x164], 0xffffffff
mov dword [esp + 0x168], 0xffffffff
mov dword [esp + 0x24], 9
mov dword [esp + 0x18], 0xffffffee
jmp 0x4217de
mov dword [esp + 0x34], 0x22e6
xor ecx, ecx
mov dword [esp + 0x30], 0x9900
mov dword [esp + 0x2c], 0xffffffff
mov eax, dword [esp + 0x34]
cmp eax, 0xffff
setne cl
add ecx, dword [esp + 0x30]
imul eax, ecx, 0xfffffff8
test eax, eax
je 0x4216d1
mov byte [esp + 0x57], 0
cmp byte [esp + 0x57], 0
je 0x4217da
push 0
call edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_RectVisible]
jmp 0x4217da
mov dword [esp + 0x14], 0xc9bf5e4d
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x1c], 0
jmp 0x4216fe
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x1ec], 0x6ab2aee5
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 2
jl 0x4216eb
cmp dword [esp + 0x10], 0
jne 0x4217e9
mov eax, dword [esp + 0x34]
mov dword [esp + 0x160], eax
test eax, eax
je 0x42177a
mov eax, dword [esp + 0x34]
mov dword [esp + 0x160], 0x551b32e2
mov dword [esp + 0x2c], 0
cmp dword [esp + 0x2c], 0
je 0x421741
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
xor edx, edx
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
sub ecx, eax
add ecx, dword [esp + 0x10]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
cmp ecx, eax
setle dl
sub edx, 0x9c2b
je 0x42177a
mov edx, ebx
jmp 0x42177c
xor edx, edx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x1ec], ecx
mov eax, dword [esp + 0x28]
sub ecx, eax
cmp ecx, edx
jl 0x4217a5
mov byte [esp + 0x56], 0
cmp byte [esp + 0x56], 0
je 0x4217da
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
jmp 0x4217da
mov byte [esp + 0x23], 0
cmp byte [esp + 0x23], 0
je 0x4217be
push 0
push 0
call edi
push eax
call dword [sym.imp.USER32.dll_SetPropA]
mov byte [esp + 0x55], 0
cmp byte [esp + 0x55], 0
je 0x4217da
push 0x71
push 0xf76
call edi
push eax
call dword [sym.imp.USER32.dll_SetWindowLongW]
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 0xfffffff2
jge 0x421679
push 0
lea eax, [esp + 0x4f]
mov byte [esp + 0x4f], 0
push eax
push 0xce2
call fcn.00422b79
mov dword [esp + 0x1c], ebx
add esp, 0xc
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], 6
mov dword [esp + 0x14], 0xfffffffc
mov dword [esp + 0x1c], 0xffffffff
mov dword [esp + 0x1c], eax
jmp 0x42183a
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0x68], 0xe836ea0e
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], ebx
jl 0x42182a
mov ecx, dword [esp + 0x10]
xor ebx, ebx
cmp ecx, 1
mov ecx, dword [esp + 0x18]
setg bl
xor edx, edx
cmp ebx, ecx
setle dl
cmp edx, dword [esp + 0x10]
je 0x421867
cmp dword [esp + 0x18], eax
jne 0x421867
mov edx, eax
jmp 0x42186a
xor edx, edx
inc edx
mov ecx, 0x4087a912
sub ecx, edx
push 0xfffffffffffffff7
pop edx
cmp edx, ecx
sbb ecx, ecx
neg ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x2c]
cmp ecx, dword [esp + 0x10]
je 0x421892
cmp dword [esp + 0x18], eax
jne 0x421892
mov esi, eax
jmp 0x421895
xor esi, esi
inc esi
mov ecx, dword [esp + 0x18]
xor edx, edx
cmp esi, ecx
push 2
setne dl
sub edx, dword [esp + 0x18]
neg edx
pop esi
sbb edx, edx
xor ebx, ebx
inc edx
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
cmp edx, ecx
mov ecx, dword [esp + 0x10]
setge bl
xor edx, edx
cmp ebx, ecx
setle dl
xor ebx, ebx
inc ebx
cmp edx, dword [esp + 0x10]
je 0x4219a4
mov dword [esp + 0x34], ebx
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], ebx
mov dword [esp + 0x14], eax
cmp dword [esp + 0x14], eax
jl 0x421a43
mov dword [esp + 0x28], 0xe785e8a7
mov dword [esp + 0x30], 0xf4a3ca5a
mov dword [esp + 0x18], eax
jmp 0x421938
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + ecx*4 + 0x68]
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x68], edx
mov byte [esp + 0x48], al
cmp byte [esp + 0x48], 0
je 0x421934
push eax
push eax
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
xor eax, eax
inc dword [esp + 0x18]
cmp dword [esp + 0x18], eax
jle 0x42190f
cmp dword [esp + 0x34], esi
je 0x421958
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + ecx*4 + 0x68]
mov ecx, dword [esp + 0x28]
mov ecx, dword [esp + 0x34]
mov ecx, dword [esp + 0x28]
mov ecx, dword [esp + 0x34]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + ecx*4 + 0x68]
cmp ecx, dword [esp + 0x68]
jle 0x421982
mov ecx, eax
cmp dword [esp + 0x30], eax
je 0x421984
mov ecx, ebx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x28]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x1c], ecx
dec dword [esp + 0x14]
jns 0x4218f9
jmp 0x421a43
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], 0x3ae864ea
mov dword [esp + 0x10], eax
jmp 0x4219c9
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x1b0], 0x2fb88b70
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x4219b6
mov ecx, dword [esp + 0x2c]
sub ecx, dword [esp + 0x2c]
je 0x421a20
mov ecx, dword [esp + 0x18]
add ecx, ecx
dec ecx
neg ecx
sbb ecx, ecx
xor ebx, ebx
inc ecx
cmp ecx, 0xffffffff
mov ecx, dword [esp + 0x2c]
setge bl
xor edx, edx
cmp ebx, ecx
setl dl
mov dword [esp + 0x34], edx
cmp dword [esp + 0x34], 0x702
jl 0x421a13
cmp dword [esp + 0x34], eax
jne 0x421a13
xor ebx, ebx
mov ecx, eax
inc ebx
jmp 0x421a18
xor ebx, ebx
inc ebx
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
mov ecx, ebx
jle 0x421a22
mov ecx, eax
mov dword [esp + 0x1b4], ecx
mov byte [esp + 0x23], al
cmp byte [esp + 0x23], al
je 0x421a43
push eax
push eax
push 0x17d5
push eax
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
xor eax, eax
mov ecx, dword [esp + 0x4c]
cmp dword [ecx + 0x10], eax
jne 0x421a53
xor al, al
jmp 0x422945
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x24], 0xfc6a3f0b
mov dword [esp + 0x30], 0xfffffffb
mov dword [esp + 0x24], 0xd0bc
mov dword [esp + 0x14], eax
jmp 0x421a8d
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x74], 0xfffffff6
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 3
jl 0x421a7d
mov dword [esp + 0x14], eax
jmp 0x421aad
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0xc0], 0xffffffff
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x421a9a
cmp dword [esp + 0x1c], eax
jne 0x421b24
mov ecx, dword [esp + 0x1c]
mov edx, ebx
sub edx, ecx
mov ecx, dword [esp + 0x1c]
cmp edx, 0xfffa
sbb edx, edx
xor ebx, ebx
inc edx
cmp edx, ecx
mov ecx, dword [esp + 0x1c]
setg bl
xor edx, edx
cmp ebx, ecx
setle dl
xor ebx, ebx
mov dword [esp + 0x18], edx
inc ebx
mov ecx, dword [esp + 0x1c]
mov edx, ebx
sub edx, ecx
add edx, dword [esp + 0x18]
je 0x421afd
mov edx, ebx
cmp dword [esp + 0x18], eax
jne 0x421aff
mov edx, eax
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x78], esi
mov ecx, dword [esp + 0x1c]
imul ecx, edx
xor edx, edx
push 2
cmp esi, ecx
pop esi
setle dl
cmp edx, 0x4f2887cf
jg 0x421b24
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xc0], ecx
mov dword [esp + 0x18], eax
jmp 0x421c26
mov dword [esp + 0x2c], 0x276ac116
mov dword [esp + 0x28], 0x7d3d8e1c
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + ecx*4 + 0x74]
mov ecx, dword [esp + 0x18]
mov dword [esp + ecx*4 + 0x74], edx
mov ecx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
cmp dword [esp + ecx*4 + 0x74], eax
je 0x421b70
mov ecx, dword [esp + 0x18]
cmp dword [esp + ecx*4 + 0x74], eax
jne 0x421b78
mov edx, eax
cmp dword [esp + 0x2c], eax
je 0x421b7a
mov edx, ebx
xor ecx, ecx
mov dword [esp + 0xc0], edx
test edx, edx
setle cl
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + ecx*4 + 0x74]
mov dword [esp + 0x28], ecx
mov edx, dword [esp + 0x28]
add edx, 0xfff9
neg edx
sbb edx, edx
xor ecx, ecx
neg edx
cmp edx, 0x860c
setle cl
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0xc4]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x18]
neg edx
sbb edx, edx
xor ebx, ebx
neg edx
mov ecx, dword [esp + ecx*4 + 0x74]
cmp edx, ecx
sete bl
sub ebx, dword [esp + 0x2c]
neg ebx
sbb ebx, ebx
xor ecx, ecx
inc ebx
cmp ebx, 0x68f7
setge cl
add ecx, ecx
je 0x421bf6
mov ecx, dword [esp + 0xc0]
mov ecx, dword [esp + 0x78]
mov ecx, dword [esp + 0x78]
mov ecx, dword [esp + 0x18]
push 1
pop ebx
mov ecx, dword [esp + ecx*4 + 0x74]
mov ecx, dword [esp + 0x30]
dec ecx
neg ecx
sbb ecx, ecx
neg ecx
imul edx, ecx, 0x2935
mov ecx, dword [esp + 0x18]
mov dword [esp + ecx*4 + 0x74], edx
inc dword [esp + 0x18]
cmp dword [esp + 0x18], esi
jle 0x421b38
mov dword [esp + 0x10], 0x469ad59e
xor ebx, ebx
mov dword [esp + 0x24], 0x20985a95
inc ebx
mov dword [esp + 0x24], 0xb8ee41b6
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x24], 0x1ba028e
mov dword [esp + 0x24], 0x515fdc8d
mov dword [esp + 0x24], 0xfffffffd
mov dword [esp + 0x24], 0x4952f341
mov dword [esp + 0xa8], 0x2a5bc422
mov dword [esp + 0x14], eax
cmp dword [esp + 0x14], 3
jge 0x421c9a
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x260], ebx
inc dword [esp + 0x14]
jmp 0x421c82
mov dword [esp + 0x14], eax
jmp 0x421cb3
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x118], 3
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jl 0x421ca0
mov dword [esp + 0x10], esi
cmp dword [esp + 0x10], eax
jl 0x421d35
push ebx
lea ecx, [esp + 0x1d4]
call fcn.00413c51
mov dword [esp + 0x40], 0
jmp 0x421ced
mov eax, dword [esp + 0x40]
mov dword [esp + eax*4 + 0x1dc], 0x290b
inc dword [esp + 0x40]
cmp dword [esp + 0x40], ebx
jl 0x421cda
mov dword [esp + 0x40], 0
cmp dword [esp + 0x40], ebx
jge 0x421d1c
push 0xfffffffffffffff7
pop edx
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x1d0]
mov dword [eax + ecx*4], edx
inc dword [esp + 0x40]
cmp dword [esp + 0x40], ebx
jl 0x421d04
inc dword [esp + 0xa8]
lea ecx, [esp + 0x1d0]
call fcn.00413d23
dec dword [esp + 0x10]
jns 0x421cc3
mov eax, dword [esp + 0x118]
xor ecx, ecx
cmp eax, 0x4361
setge cl
mov dword [esp + 0x24], ecx
mov dword [esp + 0xa0], 0x55059b8b
call fcn.00421299
mov dword [esp + 0x114], 7
lea ecx, [esp + 0x17c]
mov dword [esp + 0x98], 0x55467101
mov dword [esp + 0xe4], 0xcde6bc04
mov dword [esp + 0xac], 0x465cd386
push ebx
call fcn.00413c51
mov dword [esp + 0xf8], 0x3995
mov dword [esp + 0x120], 0xfffffffd
mov dword [esp + 0xf4], 0xfff9
mov dword [esp + 0x110], 0x26129dc0
mov dword [esp + 0x60], 0
jmp 0x421ddf
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x17c]
mov dword [eax + ecx*4], 0xfffffff8
inc dword [esp + 0x60]
cmp dword [esp + 0x60], ebx
jl 0x421dc9
lea eax, [esp + 0x114]
mov dword [esp + 0xac], ebx
push eax
lea eax, [esp + 0x140]
mov dword [esp + 0x9c], ebx
push eax
push 0x2ed5
push 0x142e
lea eax, [esp + 0xbc]
mov dword [esp + 0x14c], 0xcc19ab5
push eax
lea eax, [esp + 0x108]
mov dword [esp + 0x11c], esi
push eax
lea eax, [esp + 0x120]
push eax
lea eax, [esp + 0x12c]
push eax
push 0
lea eax, [esp + 0x108]
push eax
lea eax, [esp + 0x148]
push eax
lea eax, [esp + 0xc4]
push eax
push 0x2864
lea eax, [esp + 0x12c]
push eax
lea eax, [esp + 0x1b4]
push eax
call fcn.00422f0b
add esp, 0x3c
lea ecx, [esp + 0x17c]
call fcn.00413d23
mov dword [esp + 0x14], 0xfffffffd
xor eax, eax
mov dword [esp + 0x28], 6
mov dword [esp + 0x28], 0x75761ac7
mov dword [esp + 0x24], 0x6e523240
mov dword [esp + 0x10], eax
jmp 0x421ebd
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x88], 0xfffffffc
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x421eaa
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x14]
neg esi
mov ecx, dword [esp + 0x14]
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 + 0x88], ecx
mov ecx, dword [esp + 0x88]
neg ecx
sbb ecx, ecx
xor edx, edx
neg ecx
cmp esi, ecx
mov ecx, dword [esp + 0x14]
sete dl
xor ebx, ebx
cmp edx, ecx
mov ecx, dword [esp + 0x14]
setne bl
xor edx, edx
cmp ebx, ecx
mov ecx, dword [esp + 0x14]
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 + 0x88]
mov ecx, dword [esp + 0x14]
cmp edx, ecx
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
setle bl
mov dword [esp + 0x24], ebx
xor ebx, ebx
cmp edx, ecx
mov ecx, 0xd77dfcc8
setle bl
sub ebx, dword [esp + 0x24]
add ebx, dword [esp + 0x14]
imul ebx, dword [esp + 0x14]
cmp ecx, ebx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x24], ecx
mov byte [esp + 0x49], al
cmp byte [esp + 0x49], al
je 0x421f92
push eax
push eax
call edi
push eax
push 0
push 0
call dword [sym.imp.USER32.dll_DialogBoxParamA]
push 0x12a9
lea edx, [esp + 0x84]
xor cl, cl
call fcn.00420367
pop ecx
push dword [esp + 0xa0]
lea ecx, [esp + 0x230]
xor eax, eax
push ecx
lea ecx, [esp + 0x224]
mov dword [esp + 0x130], eax
push ecx
xorps xmm0, xmm0
mov dword [esp + 0x138], eax
push eax
lea ecx, [esp + 0x138]
mov dword [esp + 0x140], eax
movdqu xmmword [esp + 0x22c], xmm0
call fcn.00415220
xor ebx, ebx
mov dword [esp + 0x10], 0
inc ebx
cmp dword [esp + 0x10], 4
jge 0x422010
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x278], ebx
inc dword [esp + 0x10]
jmp 0x421ff8
mov eax, dword [esp + 0x128]
lea ecx, [esp + 0x128]
mov dword [eax], 0xfffffff6
call fcn.00413d23
mov dword [esp + 0x44], 0x24039b64
xor ecx, ecx
mov dword [esp + 0x140], 0x42b9193c
mov byte [esp + 0x4a], cl
cmp byte [esp + 0x4a], cl
je 0x422051
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantClear]
xor ecx, ecx
cmp dword [esp + 0x44], ecx
je 0x42207d
mov dword [esp + 0x24], ebx
mov dword [esp + 0x24], 0xfffffff8
push 3
mov dword [esp + 0xa8], 0xf55e00fe
inc dword [esp + 0xa8]
pop edi
jmp 0x422152
mov dword [esp + 0x138], ecx
mov dword [esp + 0x10], ecx
cmp dword [esp + 0x10], 2
jge 0x4220a8
push 0xfffffffffffffff7
pop edx
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x24c], edx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 2
jl 0x422092
push 3
pop edi
mov dword [esp + 0x44], edi
cmp dword [esp + 0x44], 2
jne 0x422152
mov dword [esp + 0x11c], 0xfffffffe
lea ecx, [esp + 0x150]
push edi
call fcn.00413c51
mov dword [esp + 0x5c], 0
jmp 0x4220ef
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x150]
and dword [eax + ecx*4], 0
inc dword [esp + 0x5c]
cmp dword [esp + 0x5c], edi
jl 0x4220dc
cmp dword [esp + 0x44], 0
jne 0x422144
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x13c]
push eax
lea eax, [esp + 0x148]
push eax
lea edx, [esp + 0x15c]
lea ecx, [esp + 0x128]
call fcn.00415f6b
add esp, 0xc
lea ecx, [esp + 0x150]
call fcn.00413d23
dec dword [esp + 0x44]
cmp dword [esp + 0x44], 2
je 0x4220ba
jmp 0x422150
lea ecx, [esp + 0x150]
call fcn.00413d23
xor ecx, ecx
mov eax, dword [esp + 0x4c]
cmp dword [eax + 0x14], 0x10
jb 0x422160
mov edx, dword [eax]
jmp 0x422162
mov edx, eax
cmp dword [eax + 0x14], 0x10
mov dword [esp + 0x84], edx
jb 0x422173
mov esi, dword [eax]
jmp 0x422175
mov esi, eax
mov eax, dword [eax + 0x10]
add eax, esi
cmp edx, eax
je 0x4225d0
push dword [esp + 0xa0]
movdqa xmm0, xmmword [0xaa5920]
lea eax, [esp + 0x250]
push eax
lea eax, [esp + 0x244]
mov dword [esp + 0xbc], ecx
push eax
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xc8], ecx
push ecx
lea ecx, [esp + 0xc4]
movdqu xmmword [esp + 0x24c], xmm0
call fcn.00415220
xor eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], 0xbeba
mov dword [esp + 0x10], eax
jmp 0x4221f3
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x26c], 0x48abb75d
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x4221e0
mov dword [esp + 0x1c], edi
cmp dword [esp + 0x1c], eax
jl 0x422428
mov ecx, 0x2751c76d
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xcc], ecx
mov dword [esp + 0xd0], ecx
mov dword [esp + 0xd4], ecx
mov dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x10], eax
jmp 0x422249
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x1a4], 0xed69376
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x422236
mov dword [esp + 0xc8], edi
cmp dword [esp + 0xc8], eax
jl 0x42241e
mov dword [esp + 0x10], 0xffffffff
lea ecx, [esp + 0x1e0]
mov dword [esp + 0x34], 0xcbed562b
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x14], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x24], eax
push 2
call fcn.00413c51
mov dword [esp + 0x28], 0xffffffff
mov dword [esp + 0x6c], 0
jmp 0x4222be
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x1e0]
or dword [eax + ecx*4], 0xffffffff
inc dword [esp + 0x6c]
cmp dword [esp + 0x6c], 2
jl 0x4222ab
mov dword [esp + 0x10], edi
cmp dword [esp + 0x10], 0
jl 0x4223ee
mov dword [esp + 0x24], 0x69be541
lea ecx, [esp + 0x188]
mov dword [esp + 0x24], 0
push 2
call fcn.00413c51
lea eax, [esp + 0x188]
push eax
lea eax, [esp + 0xa0]
push 0
push eax
call fcn.0042299c
mov byte [esp + 0x2f], 0
add esp, 0xc
cmp byte [esp + 0x23], 0
je 0x422331
push 0x44fe
push 0x66d
push 0
push 0x25f3
call fcn.00422aeb
add esp, 0x10
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0xb4]
mov eax, dword [eax + ecx*4]
mov dword [edx + esi*4], eax
test eax, eax
jne 0x4223cf
mov eax, dword [esp + 0x1c]
inc dword [esp + 0x28]
inc dword [esp + 0x2c]
mov eax, dword [esp + 0xc8]
cmp eax, dword [esp + 0x2c]
je 0x42236e
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x188]
neg ecx
sbb ecx, ecx
inc ecx
imul ecx, dword [eax]
test ecx, ecx
jne 0x422395
mov eax, dword [esp + 0xb4]
cmp dword [eax + 8], ecx
jne 0x422395
xor eax, eax
jmp 0x422397
mov eax, ebx
cmp eax, dword [esp + 0x34]
jne 0x4223ab
cmp dword [esp + 0x1a8], 0
jne 0x4223ab
xor ecx, ecx
jmp 0x4223ad
mov ecx, ebx
mov eax, dword [esp + 0x14]
sub ecx, eax
imul ecx, dword [esp + 0x18]
cmp ecx, 0x8ffd5269
sbb eax, eax
neg eax
cmp dword [esp + 0xd4], eax
jle 0x4223cf
xor eax, eax
jmp 0x4223d1
mov eax, ebx
mov dword [esp + 0x1a4], eax
lea ecx, [esp + 0x188]
call fcn.00413d23
dec dword [esp + 0x10]
jns 0x4222d4
push 0x586f
push 0x7d99
push 0
call fcn.00422a67
add esp, 0xc
lea ecx, [esp + 0x1e0]
call fcn.00413d23
dec dword [esp + 0xc8]
push 0
pop eax
jns 0x422263
dec dword [esp + 0x1c]
jns 0x422207
lea ecx, [esp + 0xb4]
call fcn.00413d23
mov eax, dword [esp + 0x84]
mov al, byte [eax]
cmp al, 0x30
jl 0x4224f8
cmp al, 0x39
jg 0x4224f8
xor ecx, ecx
mov dword [esp + 0x14], 0x7e2799ac
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x14], 0xe
je 0x4224d0
push 2
pop esi
mov dword [esp + 0x1c], 0xb7cefa9d
mov dword [esp + 0x10], ecx
jmp 0x422486
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x204], 0xfd4914d2
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x422473
mov byte [esp + 0x23], cl
cmp byte [esp + 0x23], 0
je 0x4224aa
push ebx
mov edx, 0x6a5a
mov ecx, 0x5642
call fcn.0041fe70
pop ecx
xor ecx, ecx
mov dword [esp + 0x1c], ecx
jmp 0x4224bf
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x204], ebx
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], esi
jl 0x4224b0
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 0xe
jne 0x422465
mov edi, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
push 3
imul esi, dword [edi], 0xa
movsx eax, byte [edx]
add eax, 0xffffffd0
add eax, esi
inc edx
mov dword [edi], eax
mov eax, dword [esp + 0x50]
pop edi
jmp 0x422162
mov dword [esp + 0x18], ebx
push 4
mov dword [esp + 0x2c], 0xfffffffd
mov dword [esp + 0x14], 0
pop ecx
jmp 0x422524
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x194], 0xfff6
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ecx
jl 0x422511
mov dword [esp + 0x18], 0
jmp 0x422543
mov dword [esp + eax*4 + 0x194], 0xd1e1
inc dword [esp + 0x18]
cmp dword [esp + 0x18], ecx
mov eax, dword [esp + 0x18]
jl 0x422534
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x198]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
neg eax
sbb eax, eax
xor edx, edx
inc eax
cmp eax, ebx
mov eax, dword [esp + 0x198]
setge dl
xor ecx, ecx
cmp edx, eax
setg cl
xor edx, edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x28]
imul ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp ecx, eax
mov eax, dword [esp + 0x18]
mov cl, bl
setge dl
sub eax, edx
neg eax
sbb eax, eax
inc eax
cmp eax, 5
mov eax, dword [esp + 0x1a0]
sbb esi, esi
xor edx, edx
neg esi
cmp esi, eax
lea eax, [esp + 0x80]
push eax
setle dl
mov dword [esp + 0x1c], edx
mov edx, 0x1acd
call fcn.00420367
pop ecx
jmp 0x421a4c
push dword [esp + 0x9c]
movdqa xmm0, xmmword [0xaa5860]
lea eax, [esp + 0x220]
push eax
lea eax, [esp + 0x214]
mov dword [esp + 0x38], 0x44ad72d7
push eax
mov dword [esp + 0x34], 0xa278c007
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf8], ecx
mov dword [esp + 0xfc], ecx
push ecx
mov dword [esp + 0x38], 0x2189f42c
lea ecx, [esp + 0xf8]
mov dword [esp + 0x38], 0xd65f4e26
movdqu xmmword [esp + 0x21c], xmm0
call fcn.00415220
xor eax, eax
mov dword [esp + 0x10], eax
jmp 0x422652
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x58], 0x2a4f
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x422642
mov ecx, dword [esp + 0x58]
mov edx, 0x98e64e6d
mov dword [esp + 0x30], ecx
xor ebx, ebx
mov ecx, dword [esp + 0x58]
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x28]
sub edx, ecx
imul edx, dword [esp + 0x58]
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
sub edx, ecx
mov ecx, dword [esp + 0x58]
cmp ecx, edx
setle bl
xor ecx, ecx
cmp ebx, 0xdac7
setl cl
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x28], eax
je 0x4226b5
cmp dword [esp + 0x58], eax
je 0x4226b5
xor ecx, ecx
inc ecx
jmp 0x4226b7
mov ecx, eax
mov eax, dword [esp + 0xe8]
mov dword [eax], ecx
lea ecx, [esp + 0xe8]
call fcn.00413d23
push dword [esp + 0x9c]
movdqa xmm0, xmmword [0xaa58c0]
lea ecx, [esp + 0x240]
push ecx
xor eax, eax
mov dword [esp + 0x1c], 0xffffffff
lea ecx, [esp + 0x234]
mov dword [esp + 0xe0], eax
push ecx
push eax
lea ecx, [esp + 0xe8]
mov dword [esp + 0xec], eax
movdqu xmmword [esp + 0x23c], xmm0
mov dword [esp + 0xf0], eax
call fcn.00415220
mov dword [esp + 0x28], 0x39d98273
push 0xfffffffffffffffd
pop eax
mov dword [esp + 0x18], 0x2f63069b
mov dword [esp + 0x24], eax
mov dword [esp + 0x4c], eax
xor eax, eax
mov dword [esp + 0x10], eax
jmp 0x422756
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x8c], 0x82a1
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x422743
cmp dword [esp + 0x14], eax
je 0x422788
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0xd8]
mov dword [ecx + 0xc], edx
mov ecx, dword [esp + 0x90]
imul ecx, dword [esp + 0x14]
cmp edx, ecx
jge 0x422788
xor esi, esi
inc esi
jmp 0x42278a
mov esi, eax
mov ecx, dword [esp + 0x90]
xor ebx, ebx
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x90]
cmp edx, ecx
mov ecx, dword [esp + 0x90]
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 + 0x18]
mov edx, dword [esp + 0x90]
add edx, ecx
xor ecx, ecx
cmp edx, 0x4cbe
setle cl
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x18]
sub edx, ecx
neg edx
sbb edx, edx
inc edx
mov dword [esp + 0x4c], edx
mov ecx, dword [esp + 0x90]
cmp dword [esp + 0x4c], ecx
jne 0x42285d
push eax
lea eax, [esp + 0x108]
mov dword [esp + 0x138], 0x1c9b6cd0
push eax
lea eax, [esp + 0x13c]
mov dword [esp + 0x10c], 0x1aa2910a
push eax
lea eax, [esp + 0x118]
mov dword [esp + 0x130], 1
push eax
lea edx, [esp + 0x134]
mov dword [esp + 0x11c], 0xffffffff
mov ecx, 0x3cf
call fcn.00420874
add esp, 0x10
jmp 0x422937
mov dword [esp + 0x30], 0x52276c1f
mov byte [esp + 0x23], al
cmp byte [esp + 0x23], al
je 0x422879
push eax
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
xor eax, eax
mov dword [esp + 0x18], edi
cmp dword [esp + 0x18], eax
jl 0x422937
mov dword [esp + 0x24], 0x1a1f
mov dword [esp + 0x14], eax
cmp dword [esp + 0x14], edi
jg 0x42292d
mov dword [esp + 0x28], 0xf1f3e168
xor ebx, ebx
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0xd8]
push 1
push 0x22b
push 0x11e8
cmp dword [edx], ecx
push 0x5060
setl bl
mov dword [edx + esi*4], ebx
mov esi, dword [esp + 0x38]
sub esi, 0xcc0d6813
add esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x9c]
neg esi
sbb esi, esi
xor edx, edx
inc esi
cmp esi, ecx
setne dl
xor ecx, ecx
cmp edx, 0x51ad
mov edx, 0xc1a
setle cl
mov dword [esp + 0x38], ecx
lea ecx, [esp + 0x64]
mov byte [esp + 0x64], al
call fcn.00420874
add esp, 0x10
inc dword [esp + 0x14]
push 0
pop eax
cmp dword [esp + 0x14], edi
jle 0x42289d
dec dword [esp + 0x18]
jns 0x422887
lea ecx, [esp + 0xd8]
call fcn.00413d23
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret