Function at 0x404986
Capabilities:
Accept command line arguments
Allocate or change rwx memory
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
mov eax, 0xc8
sub eax, eax
xor dword [ebp - 0x40], 0xff00ff
cmp dword [ebp - 0x2c], eax
jae 0x4049aa
mov edx, dword [ebp - 0x34]
cmp eax, 0xd0
jne 0x4049aa
call fcn.00404950
sub ecx, ecx
sub dword [ebp - 0x2c], 0x62
sub ecx, ecx
or dword [ebp - 0x34], 0xffffff
test ecx, ecx
jae 0x4049df
xor eax, eax
xor dword [ebp - 0x30], 0xffffff
and dword [ebp - 0x30], 0xffffff
mov cx, 4
mov eax, 2
sub dword [ebp - 0x38], 0x7c
and dword [ebp - 0x30], 0xffff
lea esi, [ebp - 0x30]
push esi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov dword [ebp - 0x40], edi
mov edi, 0x66
mov edi, eax
mov esi, edx
mov edx, dword [ebp - 0x34]
mov ecx, 4
mov dword [ebp - 0x40], esi
mov eax, dword [ebp]
mov di, 1
mov di, 8
mov eax, dword [esp]
lea edi, [esi]
mov dword [ebp - 0x38], edi
lea esi, [esi]
mov esi, edi
lea edx, [edx]
mov dword [ebp - 0x38], edi
sub edi, edi
lea edx, [eax]
or dword [ebp - 0x38], 0x777777
lea eax, [esi]
mov dword [ebp - 0x3c], 0x59
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.kernel32.dll_lstrlenA]
mov di, 0x80
mov di, 0x80
mov edi, edx
mov edx, edi
mov edi, 4
mov edi, eax
mov edx, dword [ebp]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x34], ecx
mov eax, dword [esp]
mov eax, esi
mov edx, dword [ebp]
mov dword [ebp - 0x30], edi
mov edi, 0x10
mov si, 0xb2
mov ax, 0x10
mov edx, dword [esp]
sub dword [ebp - 0x2c], 0xdddddddd
mov esi, dword [ebp - 0x40]
lea ecx, [ebp - 0x30]
mov edi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x34]
sub eax, eax
xor dword [ebp - 0x38], 0xffff
cmp eax, 0xb6e
ja 0x404aba
mov ecx, 0
or dword [ebp - 0x40], 0xffffff
or dword [ebp - 0x2c], 0xffffff
test ecx, ecx
jne 0x404aba
mov dword [ebp - 0x38], 0x4c
mov edx, dword [ebp - 0x34]
sub dword [ebp - 0x3c], 1
cmp edx, dword [ebp - 0x2c]
jbe 0x404ade
mov ecx, 0
cmp dword [ebp - 0x3c], edx
ja 0x404ade
and dword [ebp - 0x3c], 0xffff
mov dword [ebp - 0x2c], 0x30
lea edi, [ebp - 0x2c]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov ecx, dword [esp]
lea eax, [edx]
mov edi, dword [ebp]
mov edi, ecx
lea esi, [edi]
mov eax, 0x97
mov ecx, dword [esp]
mov esi, edx
mov dword [ebp - 0x40], edi
mov edx, dword [ebp]
mov eax, dword [ebp]
mov edx, 0x10
mov edi, ecx
lea edi, [edx]
mov ecx, edi
mov edx, dword [ebp]
mov edi, eax
lea esi, [ebp - 0x2c]
and dword [ebp - 0x2c], 0x88888888
lea ecx, [ecx]
add dword [ebp - 0x3c], 0x22
mov dword [ebp - 0x34], 2
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.kernel32.dll_lstrlenA]
mov dword [ebp - 0x30], edx
mov esi, dword [ebp]
mov dword [ebp - 0x38], edi
mov edx, dword [ebp - 0x3c]
mov dx, 2
lea edx, [ecx]
mov eax, dword [ebp - 0x3c]
mov esi, dword [ebp]
mov dword [ebp - 0x3c], edi
mov esi, dword [ebp - 0x3c]
mov esi, edx
lea edi, [edi]
mov edi, edx
mov esi, edi
mov esi, eax
mov ax, 0xa5
lea edi, [edx]
mov dword [ebp - 0x38], ecx
add dword [ebp - 0x2c], 0xdd00dddd
mov edi, dword [esp]
mov esi, dword [ebp]
mov di, 0xfc
mov eax, 0x300
mov ax, 0x42
mov dword [ebp - 0x34], eax
or dword [ebp - 0x3c], 0xff00ff
cmp eax, 0
ja 0x404ba4
xor edx, edx
and dword [ebp - 0x40], 0xff
mov dword [ebp - 0x2c], eax
xor edx, edx
add dword [ebp - 0x34], 4
and dword [ebp - 0x30], 0xff
and dword [ebp - 0x34], 0xffff
lea esi, [ebp - 0x3c]
push esi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov dword [ebp - 0x2c], edi
mov edx, dword [esp]
mov edi, dword [ebp]
mov ecx, dword [ebp]
mov cx, 0xfd
mov esi, dword [ebp - 0x3c]
lea edi, [eax]
mov edi, dword [esp]
mov ecx, 0x40
mov dword [ebp - 0x3c], edi
mov edi, dword [ebp - 0x34]
mov eax, dword [ebp]
lea eax, [ecx]
mov edx, dword [ebp]
lea edx, [ebp - 0x3c]
mov dword [ebp - 0x3c], eax
lea edi, [ebp - 0x2c]
or dword [ebp - 0x40], 0xaaaa
xor dword [ebp - 0x34], 0x99
mov si, 4
mov ecx, 0x10
lea esi, [edi]
mov eax, 0x12c
and dword [ebp - 0x30], 0xffff
sub dword [ebp - 0x38], 0x54
cmp dword [ebp - 0x34], eax
je 0x404c31
mov dword [ebp - 0x38], 2
and dword [ebp - 0x30], 0xffff
mov ecx, 0x12c
lea edx, [ebp - 0x3c]
push edx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, dword [ebp]
mov di, 0x80
lea eax, [ebp - 0x34]
mov edi, dword [esp]
mov edi, dword [ebp]
mov ecx, dword [esp]
mov eax, ecx
mov edx, dword [ebp]
lea edx, [ebp - 0x3c]
mov dword [ebp - 0x40], ecx
lea eax, [ebp - 0x3c]
mov edx, dword [ebp]
mov esi, dword [ebp - 0x40]
mov eax, dword [esp]
mov ecx, edi
lea edi, [ebp - 0x30]
mov esi, dword [ebp - 0x34]
sub edx, edx
mov ecx, dword [ebp]
mov dword [ebp - 0x30], 2
lea eax, [edi]
and dword [ebp - 0x2c], 0x88888888
mov edx, 0x300
mov edx, 0x3d
and dword [ebp - 0x2c], 0xff
mov ecx, 8
sub ecx, ecx
lea ecx, [ebp - 0x38]
push ecx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, ecx
mov dx, 4
mov esi, 0x40
lea edx, [edx]
mov eax, ecx
lea ecx, [ebp - 0x30]
mov ax, 0xf7
mov ecx, edi
lea edx, [edx]
mov ecx, 2
mov edi, dword [esp]
mov edi, dword [ebp]
mov edx, dword [esp]
mov edx, esi
mov esi, dword [ebp - 0x40]
lea edi, [ebp - 0x30]
mov di, 1
mov ecx, dword [ebp - 0x40]
mov edx, dword [ebp]
add dword [ebp - 0x34], 0xaaaaaaaa
mov ecx, 0x79
xor esi, esi
xor ecx, ecx
cmp ecx, dword [ebp - 0x30]
je 0x404d07
xor edx, edx
and dword [ebp - 0x2c], 0xff
mov dword [ebp - 0x38], edx
cmp edx, 0x724
jb 0x404d07
call 0x406652
lea ecx, [ebp - 0x38]
push ecx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov eax, 0x9c
mov dword [ebp - 0x40], edi
lea eax, [ebp - 0x3c]
lea esi, [edx]
mov di, 8
mov esi, 0x10
mov edi, dword [esp]
lea edi, [ebp - 0x40]
lea esi, [edi]
mov edx, dword [ebp]
mov cx, 2
mov edi, 5
mov edi, dword [ebp - 0x34]
mov ecx, dword [ebp]
lea esi, [esi]
mov esi, 0x2d
lea edx, [edx]
mov dword [ebp - 0x34], edx
and dword [ebp - 0x3c], 0x6666
mov dword [ebp - 0x34], edi
lea esi, [ebp - 0x30]
mov si, 0x76
mov ecx, 0x64
mov eax, dword [ebp - 0x3c]
lea edi, [ebp - 0x3c]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
lea eax, [eax]
mov esi, edi
lea edx, [ebp - 0x30]
mov esi, dword [esp]
lea edi, [edx]
mov edi, dword [esp]
mov ecx, edx
mov edx, esi
lea edx, [edx]
lea ecx, [eax]
mov dword [ebp - 0x40], edi
mov ecx, dword [ebp]
lea edi, [ebp - 0x2c]
mov dword [ebp - 0x38], ecx
mov ecx, 0x20
lea edx, [eax]
mov edx, eax
mov dword [ebp - 0x30], edi
mov eax, esi
and dword [ebp - 0x38], 0xbb00bbbb
mov edi, dword [ebp - 0x3c]
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0x30]
push ecx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov ecx, edi
mov di, 0x89
mov dword [ebp - 0x30], ecx
mov ax, 0x69
mov edx, dword [ebp - 0x2c]
lea eax, [esi]
mov eax, edx
lea ecx, [ecx]
mov esi, 0x99
lea esi, [ebp - 0x40]
mov edi, ecx
mov edi, 0x80
mov edi, dword [esp]
lea eax, [ebp - 0x30]
lea edi, [ebp - 0x3c]
mov ax, 0x40
lea ecx, [ebp - 0x38]
sub edx, edx
mov cx, 0x6d
mov dx, 8
mov eax, dword [ebp]
add dword [ebp - 0x34], 0x7777
lea edi, [ebp - 0x40]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
lea edi, [edx]
mov edx, ecx
mov edi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x38]
lea eax, [edi]
mov ecx, eax
lea edi, [esi]
lea edi, [edi]
mov esi, dword [esp]
mov dword [ebp - 0x2c], edx
mov di, 0xdb
mov esi, dword [ebp]
lea esi, [ecx]
mov edi, dword [ebp]
lea edi, [ebp - 0x3c]
mov esi, 0xac
mov dword [ebp - 0x38], edi
add dword [ebp - 0x2c], 0x44440044
lea edx, [ebp - 0x30]
mov dword [ebp - 0x2c], edx
and dword [ebp - 0x34], 0x666666
xor dword [ebp - 0x34], 0xffffffff
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov esi, 0x10
lea esi, [esi]
lea ecx, [eax]
mov cx, 0xc7
lea esi, [ebp - 0x30]
lea edi, [edi]
mov dword [ebp - 0x40], edx
mov ax, 0xf9
lea edi, [ebp - 0x38]
lea esi, [esi]
mov esi, dword [ebp - 0x2c]
mov edi, dword [esp]
lea esi, [ebp - 0x3c]
lea edx, [edx]
mov esi, 8
lea edi, [ebp - 0x38]
lea esi, [ebp - 0x38]
mov edx, dword [ebp - 0x38]
mov esi, 0x40
mov edi, dword [esp]
sub dword [ebp - 0x3c], 0xaaaa00aa
mov dword [ebp - 0x3c], ecx
sub edx, edx
and dword [ebp - 0x30], 0xffff
or dword [ebp - 0x30], 0xff00ff
cmp edx, dword [ebp - 0x2c]
jae 0x404ecc
mov ecx, 0x12c
mov dword [ebp - 0x30], ecx
mov ecx, 0x6a
lea edx, [ebp - 0x30]
push edx
call dword [sym.imp.kernel32.dll_lstrlenA]
lea edi, [ecx]
mov ecx, dword [esp]
lea eax, [edi]
mov esi, dword [esp]
mov ax, 0x88
mov cx, 0x80
mov edi, dword [esp]
mov eax, dword [ebp]
mov ax, 0x80
mov ecx, dword [esp]
mov dword [ebp - 0x34], esi
mov edi, dword [esp]
mov edi, dword [esp]
mov dword [ebp - 0x40], esi
lea esi, [edi]
lea esi, [esi]
mov dword [ebp - 0x2c], ecx
or dword [ebp - 0x38], 0x33330033
lea edi, [eax]
mov edi, dword [ebp - 0x38]
sub edx, edx
add dword [ebp - 0x3c], 0x88888888
mov ecx, 0x100
xor dword [ebp - 0x40], 0xff00ff
mov cx, 4
mov cx, 0x7d
cmp ecx, dword [ebp - 0x3c]
je 0x404f3a
sub edx, edx
xor ecx, ecx
lea eax, [ebp - 0x40]
push eax
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, dword [esp]
lea ecx, [eax]
mov dword [ebp - 0x34], eax
mov edi, dword [esp]
mov edx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x34]
mov esi, dword [esp]
mov eax, 0x9d
mov dword [ebp - 0x3c], edi
mov edi, dword [ebp - 0x2c]
mov cx, 0x54
mov eax, ecx
lea esi, [edi]
mov cx, 0x40
mov esi, dword [esp]
mov edi, dword [ebp - 0x34]
lea esi, [esi]
mov edi, dword [ebp]
xor dword [ebp - 0x3c], 0xaa
xor edi, edi
or dword [ebp - 0x2c], 0xdddd00dd
mov eax, dword [esp]
lea esi, [ebp - 0x38]
push esi
call dword [sym.imp.kernel32.dll_lstrlenA]
lea esi, [esi]
lea edi, [ebp - 0x30]
mov ecx, edi
mov si, 8
mov esi, dword [ebp - 0x34]
lea edi, [ebp - 0x2c]
lea eax, [ebp - 0x2c]
mov edi, dword [ebp]
lea ecx, [ebp - 0x34]
mov edx, dword [ebp - 0x40]
mov edi, esi
mov esi, eax
mov edi, dword [esp]
lea eax, [ebp - 0x3c]
mov edi, dword [esp]
mov eax, dword [esp]
lea esi, [esi]
mov ecx, 0x20
lea edi, [edi]
mov ecx, dword [ebp - 0x2c]
xor edx, edx
sub dword [ebp - 0x40], 0xcccc
xor ecx, ecx
and dword [ebp - 0x34], 0xffff
add dword [ebp - 0x30], 4
cmp dword [ebp - 0x2c], ecx
jne 0x404fff
mov edx, 0x300
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x38], 0x16
cmp dword [ebp - 0x38], edx
jae 0x404fff
lea edx, [ebp - 0x38]
push edx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov esi, 0x10
mov dword [ebp - 0x38], esi
lea ecx, [esi]
mov ecx, 0x80
mov esi, dword [ebp]
mov di, 0x5f
mov ecx, dword [esp]
mov edi, dword [ebp]
lea edx, [eax]
mov edx, dword [esp]
mov di, 1
lea ecx, [ecx]
mov dword [ebp - 0x3c], edi
mov edi, ecx
lea ecx, [edx]
mov eax, dword [ebp]
lea eax, [esi]
mov edi, 0xe7
and dword [ebp - 0x3c], 0xff00ff
mov dword [ebp - 0x34], edx
or dword [ebp - 0x2c], 0x11000011
mov ecx, dword [ebp - 0x30]
mov ecx, 0
mov dword [ebp - 0x2c], 0x80
xor ecx, ecx
xor ecx, ecx
mov edx, 0x64
lea esi, [ebp - 0x34]
push esi
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov eax, dword [esp]
mov edx, edi
mov edi, 0x5f
lea edi, [edi]
mov dword [ebp - 0x2c], ecx
mov eax, dword [ebp]
mov edi, 0x9e
lea eax, [edi]
mov dword [ebp - 0x30], esi
lea edi, [ebp - 0x34]
mov dword [ebp - 0x30], esi
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp]
mov edx, 4
mov dword [ebp - 0x34], edx
lea edi, [esi]
mov edx, 0x40
and dword [ebp - 0x2c], 0x880088
add dword [ebp - 0x30], 0xcc00cc
mov di, 1
mov dword [ebp - 0x40], edx
lea ecx, [ebp - 0x34]
xor eax, eax
and dword [ebp - 0x3c], 0xff
xor dword [ebp - 0x40], 0xff00ff
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], 0x40
cmp eax, 0
jne 0x4050f5
mov ecx, 0
sub ecx, ecx
mov dword [ebp - 0x30], 4
cmp eax, dword [ebp - 0x30]
jae 0x4050f5
lea ecx, [ebp - 0x30]
push ecx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, 0x21
mov di, 0x40
mov edi, dword [ebp]
lea esi, [ebp - 0x3c]
mov dword [ebp - 0x40], edx
lea edi, [ecx]
mov dword [ebp - 0x30], esi
mov si, 0xde
mov ecx, dword [ebp]
mov dword [ebp - 0x40], eax
mov di, 0xd1
mov edx, dword [ebp]
mov eax, dword [ebp - 0x38]
lea edi, [edi]
mov dx, 4
mov eax, edx
lea esi, [edi]
xor dword [ebp - 0x34], 0x8888
or dword [ebp - 0x34], 0x99009999
sub edi, edi
xor eax, eax
xor dword [ebp - 0x3c], 0xffffff
mov eax, dword [ebp - 0x3c]
xor dword [ebp - 0x40], 0xffffff
or dword [ebp - 0x3c], 0xff00ff
add dword [ebp - 0x40], 0x10
mov ecx, 0
xor ecx, ecx
lea ecx, [ebp - 0x40]
xor dword [ebp - 0x3c], 0xff
xor dword [ebp - 0x38], 0xffff
sub ecx, ecx
sub dword [ebp - 0x40], 0x6b
xor dword [ebp - 0x2c], 0xffff
xor ecx, ecx
cmp ecx, dword [ebp - 0x34]
ja 0x4051a0
mov eax, 0xc8
xor eax, eax
mov dword [ebp - 0x40], eax
cmp ecx, 0xa1
jne 0x4051a0
sub eax, eax
lea eax, [ebp - 0x38]
cmp dword [ebp - 0x30], eax
ja 0x4051c0
mov ecx, 0x3e
sub dword [ebp - 0x40], 0x20
xor ecx, ecx
mov dword [ebp - 0x3c], 0x29
sub dword [ebp - 0x3c], 0x6d
and dword [ebp - 0x3c], 0xffffff
call dword [sym.imp.kernel32.dll_GetCommandLineA]
mov dx, 0x20
mov di, 4
mov edi, dword [esp]
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x2c], edx
mov edi, 4
lea edx, [ebp - 0x34]
mov ecx, 1
mov si, 8
mov esi, 0xf1
mov esi, edi
mov dword [ebp - 0x40], eax
mov di, 0xd9
mov ax, 1
mov edx, 0x80
mov edi, dword [ebp - 0x34]
mov esi, dword [ebp]
add dword [ebp - 0x2c], 0x22
or dword [ebp - 0x2c], 0xee
and dword [ebp - 0x34], 0xee0000ee
mov dword [ebp - 0x40], edi
or dword [ebp - 0x40], 0x5555
sub dword [ebp - 0x18], 0xffffffff
mov ecx, dword [ebp - 0x3c]
mov cx, 1
sub dword [ebp - 0x38], 0x20
lea eax, [ebp - 0x30]
mov eax, dword [ebp - 0x34]
and dword [ebp - 0x38], 0xff00ff
call dword [sym.imp.kernel32.dll_GetCommandLineA]
mov ecx, dword [ebp]
mov di, 0x40
mov cx, 0x10
lea edi, [esi]
lea edx, [edi]
mov cx, 0x80
lea edi, [esi]
mov ax, 0x9c
mov eax, dword [esp]
mov edi, dword [ebp]
mov edi, dword [ebp - 0x40]
mov edi, 4
mov dword [ebp - 0x30], ecx
mov edx, 0x80
mov esi, 0x40
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x40]
lea ecx, [edi]
mov dx, 8
sub edi, edi
and dword [ebp - 0x38], 0x77770077
xor dword [ebp - 0x2c], 0xaa0000aa
xor eax, eax
mov ecx, 0x3c
xor eax, eax
xor eax, eax
test eax, eax
je 0x4052b3
mov ecx, 0x12c
mov dword [ebp - 0x3c], eax
xor ecx, ecx
xor esi, esi
mov edx, 0
mov dx, 2
cmp edx, 0
jb 0x4052d5
mov ecx, dword [ebp - 0x34]
or dword [ebp - 0x38], 0xff
cmp edx, 0xce
je 0x4052d5
mov ecx, 0xb
xor ecx, ecx
mov edx, 0x12c
xor dword [ebp - 0x38], 0xff00ff
sub dword [ebp - 0x2c], 6
cmp edx, dword [ebp - 0x2c]
jbe 0x405302
mov edi, 0xc8
xor dword [ebp - 0x34], 0xffffff
cmp edi, dword [ebp - 0x2c]
je 0x405302
xor esi, dword [ebp - 0x18]
xor ecx, dword [esi]
mov edx, 0x12c
xor edi, edi
and dword [ebp - 0x3c], 0xff
sub edi, edi
mov dx, 0x22
mov edx, 0xc8
or dword [ebp - 0x34], 0xffffff
sub edi, edi
xor edi, edi
xor ecx, 0x18a164
jne 0x40517a
mov eax, 0x200
and dword [ebp - 0x2c], 0xff
sub dword [ebp - 0x40], 0x3c
cmp dword [ebp - 0x30], eax
ja 0x40534e
sub edx, edx
lea edx, [ebp - 0x2c]
push edx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov si, 1
mov dword [ebp - 0x38], edi
mov edi, ecx
mov dword [ebp - 0x3c], eax
mov cx, 0xda
lea edx, [ecx]
mov esi, dword [ebp - 0x2c]
lea edx, [ebp - 0x34]
mov edx, dword [ebp]
mov eax, dword [ebp]
mov eax, 8
mov dword [ebp - 0x40], edi
mov edi, edx
lea ecx, [edi]
lea esi, [edi]
mov edi, dword [ebp]
mov dword [ebp - 0x2c], esi
mov eax, 0xb5
mov dword [ebp - 0x38], 0x10
or dword [ebp - 0x2c], 0x44000044
sub dword [ebp - 0x34], 0x11
sub esi, esi
sub edx, edx
mov eax, 0x100
lea edx, [ebp - 0x30]
push edx
call dword [sym.imp.kernel32.dll_GetVersionExA]
lea edi, [ebp - 0x38]
mov ecx, dword [ebp]
lea edi, [ecx]
mov ecx, dword [ebp]
lea edx, [edi]
mov di, 0xb0
mov edi, dword [esp]
mov dword [ebp - 0x30], edx
mov edi, 0x63
mov esi, dword [esp]
mov edx, dword [ebp - 0x3c]
mov esi, dword [ebp]
lea edx, [ebp - 0x30]
lea edi, [eax]
mov ecx, dword [ebp]
mov edi, edx
lea ecx, [ebp - 0x34]
and dword [ebp - 0x34], 0xee
mov dword [ebp - 0x30], eax
lea edi, [esi]
lea esi, [edx]
lea eax, [esi]
mov ecx, 0x12c
add dword [ebp - 0x40], 2
sub dword [ebp - 0x3c], 0x2c
cmp ecx, 0
jne 0x405420
mov ecx, 0x2c
mov edx, 0x100
mov dx, 0x80
mov dword [ebp - 0x38], ecx
xor dword [ebp - 0x3c], 0xff
inc dword [ebp - 0x18]
mov edx, 0x300
sub edx, edx
mov dword [ebp - 0x2c], edx
cmp edx, 0xe2
jb 0x405445
xor edx, edx
sub ecx, ecx
lea ecx, [ebp - 0x40]
add dword [ebp - 0x40], 0x10
lea edx, [ebp - 0x34]
sub edx, edx
xor eax, eax
mov edx, 0x300
lea edx, [ebp - 0x2c]
and dword [ebp - 0x3c], 0xff00ff
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x38], 0x3d
xor eax, dword [ebp - 0x18]
mov edx, 0x300
cmp edx, 0x57
jbe 0x405488
mov ecx, 0x12c
lea ecx, [ebp - 0x34]
and dword [ebp - 0x40], 0xff00ff
cmp edx, 0
ja 0x405488
and dword [ebp - 0x40], 0xff
lea ecx, [ebp - 0x34]
add dword [ebp - 0x38], 2
sub edx, edx
mov edi, dword [eax]
mov edx, 0
cmp edx, dword [ebp - 0x30]
ja 0x4054b2
mov esi, 0x10
and dword [ebp - 0x30], 0xff00ff
xor esi, esi
and dword [ebp - 0x3c], 0xff00ff
xor edx, edx
mov dword [ebp - 0x1c], edi
mov eax, dword [ebp - 0x34]
lea eax, [ebp - 0x3c]
mov eax, 0x80
mov edx, 0x200
add dword [ebp - 0x40], 0x80
xor dword [ebp - 0x2c], 0xffff
push 0x40
push 0x1000
push 0x16000
push 0
push 0xffffffffffffffff
call dword [sym.imp.kernel32.dll_VirtualAllocEx]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov di, 1
mov edi, dword [ebp]
mov edi, 8
lea eax, [edx]
lea edi, [ebp - 0x38]
mov esi, dword [ebp - 0x3c]
mov edi, 0x1f
lea edi, [ebp - 0x3c]
lea edi, [ebp - 0x40]
mov edx, dword [ebp - 0x38]
lea esi, [ebp - 0x34]
mov edx, 0x4a
lea eax, [eax]
mov esi, dword [ebp - 0x34]
mov edx, dword [ebp]
lea eax, [ebp - 0x30]
mov esi, eax
mov esi, dword [esp]
lea esi, [edi]
mov edi, dword [esp]
add dword [ebp - 0x3c], 0x44440044
lea eax, [eax]
lea edi, [ebp - 0x3c]
push edi
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dword [ebp - 0x34], eax
mov edi, 8
lea edi, [edi]
lea edx, [edx]
mov si, 3
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x3c]
mov edi, 0x55
mov edi, 8
mov ecx, dword [ebp]
mov cx, 0x65
mov esi, dword [esp]
mov edi, dword [ebp - 0x3c]
lea edi, [edi]
mov esi, 0xfc
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x30], edx
lea esi, [esi]
mov dword [ebp - 0x34], eax
and dword [ebp - 0x2c], 0x99990099
mov ecx, dword [ebp]
mov dword [ebp - 0x30], 0x7f
and dword [ebp - 0x3c], 0xbbbbbbbb
lea edi, [ebp - 0x40]
push edi
call dword [sym.imp.kernel32.dll_GetVersionExA]
lea ecx, [ebp - 0x40]
mov cx, 0x80
mov eax, 0xda
lea eax, [ebp - 0x34]
mov eax, dword [esp]
mov dword [ebp - 0x40], edi
lea ecx, [ebp - 0x30]
mov ecx, edi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x38], eax
mov di, 0x16
mov edi, dword [ebp - 0x38]
mov edx, 2
mov dword [ebp - 0x30], edi
mov cx, 0x6f
mov eax, esi
mov dword [ebp - 0x34], esi
mov edi, dword [ebp - 0x2c]
lea edx, [ebp - 0x3c]
mov edi, 0x51
xor ecx, ecx
mov esi, dword [ebp]
lea esi, [ebp - 0x30]
push esi
call dword [sym.imp.kernel32.dll_GetVersionExA]
lea edi, [ebp - 0x40]
mov edi, 2
lea eax, [ebp - 0x3c]
mov ecx, dword [esp]
mov ecx, dword [esp]
mov edi, dword [ebp - 0x3c]
mov edi, dword [ebp]
mov cx, 0x3e
lea ecx, [ecx]
lea edx, [eax]
mov eax, dword [esp]
mov edi, dword [esp]
mov dword [ebp - 0x34], edi
mov edi, dword [ebp]
lea esi, [esi]
mov eax, 0x20
lea ecx, [ebp - 0x34]
mov di, 0x90
mov ecx, edi
sub dword [ebp - 0x38], 0x66666666
mov esi, 0xf7
xor dword [ebp - 0x30], 0xdd0000dd
sub ecx, ecx
lea ecx, [ebp - 0x40]
sub dword [ebp - 0x34], 0x13
test ecx, ecx
jbe 0x40566c
xor edx, edx
lea edx, [ebp - 0x3c]
cmp dword [ebp - 0x2c], edx
jne 0x40566c
add dword [ebp - 0x40], 0x20
mov ecx, dword [ebp - 0x40]
mov dword [ebp - 0x2c], ecx
test ecx, ecx
jbe 0x405697
mov eax, dword [ebp - 0x34]
and dword [ebp - 0x34], 0xffffff
cmp dword [ebp - 0x2c], ecx
ja 0x40569b
mov cx, 0x10
xor dword [ebp - 0x40], 0xff
and dword [ebp - 0x38], 0xffffff
add dword [ebp - 0x34], 0x65
lea ecx, [ebp - 0x38]
push ecx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov edi, dword [ebp]
mov edi, esi
lea ecx, [ebp - 0x34]
mov edx, dword [esp]
mov edx, 4
mov edi, 0x40
mov edi, ecx
mov dword [ebp - 0x34], edi
mov esi, edi
lea edi, [edi]
lea edi, [edi]
mov ax, 0x20
mov dword [ebp - 0x38], edi
mov ecx, dword [ebp]
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x38], eax
lea edi, [ebp - 0x34]
mov edi, esi
or dword [ebp - 0x2c], 0xcc00cc
mov edi, dword [esp]
add dword [ebp - 0x34], 0x66006666
mov dword [ebp - 0x30], edi
lea ecx, [ebp - 0x30]
push ecx
call dword [sym.imp.kernel32.dll_GetVersionExA]
lea ecx, [esi]
mov edx, ecx
lea edi, [edi]
lea esi, [esi]
mov edx, edi
mov ecx, 0x15
mov esi, dword [ebp]
lea esi, [esi]
mov ecx, 0x20
mov ecx, dword [esp]
mov edi, eax
mov dword [ebp - 0x34], edi
lea edi, [esi]
lea ecx, [eax]
mov esi, dword [ebp - 0x40]
mov eax, dword [esp]
mov dword [ebp - 0x40], esi
add dword [ebp - 0x40], 0xdddddddd
xor edi, edi
and dword [ebp - 0x2c], 0xcc00cccc
mov esi, 1
mov esi, dword [esp]
xor ecx, ecx
or dword [ebp - 0x38], 0xff00ff
test ecx, ecx
je 0x405762
mov edx, 0x64
xor dword [ebp - 0x40], 0xff00ff
mov dword [ebp - 0x38], 4
sub dword [ebp - 0x30], 0x43
lea edi, [ebp - 0x30]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov ecx, 0x80
mov ecx, 0x80
lea edx, [ebp - 0x40]
mov dword [ebp - 0x2c], ecx
lea edx, [edx]
mov ecx, edi
mov dword [ebp - 0x2c], edx
mov eax, dword [ebp - 0x30]
mov edi, dword [esp]
lea edx, [esi]
mov edi, dword [esp]
lea edi, [esi]
mov dword [ebp - 0x3c], esi
mov esi, 0x11
mov di, 8
mov eax, dword [ebp - 0x30]
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x40], 0x80
or dword [ebp - 0x2c], 0x22000022
xor dword [ebp - 0x2c], 0x88000088
lea edi, [edx]
mov edi, dword [ebp - 0x2c]
mov eax, 0
or dword [ebp - 0x40], 0xffffff
lea eax, [ebp - 0x38]
cmp dword [ebp - 0x3c], eax
ja 0x4057da
mov edx, 0x64
cmp eax, 0
je 0x4057da
add dword [ebp - 0x38], 0x21
lea edx, [ebp - 0x40]
push edx
call dword [sym.imp.kernel32.dll_lstrlenA]
lea eax, [eax]
mov edx, ecx
lea eax, [edi]
mov eax, dword [ebp]
mov esi, dword [ebp - 0x38]
mov edi, dword [ebp - 0x30]
mov edx, 4
lea esi, [ebp - 0x38]
mov eax, dword [ebp]
lea esi, [ebp - 0x2c]
mov edi, esi
lea edi, [edi]
mov ecx, dword [ebp]
lea esi, [esi]
lea edi, [edi]
mov eax, dword [ebp - 0x30]
lea edx, [edx]
xor dword [ebp - 0x2c], 0xcccccccc
mov ecx, 0xdc
mov eax, edi
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp]
mov ecx, 0x100
sub ecx, ecx
mov edx, 0x300
or dword [ebp - 0x34], 0xff00ff
lea ecx, [ebp - 0x34]
push ecx
call dword [sym.imp.kernel32.dll_GetVersionExA]
lea ecx, [ecx]
lea ecx, [edi]
mov edi, 0x80
mov ecx, dword [esp]
lea edx, [ecx]
mov edx, 0x80
mov dword [ebp - 0x34], edi
lea eax, [ebp - 0x40]
mov edi, esi
lea esi, [ebp - 0x30]
mov esi, 0xa8
mov ax, 8
mov esi, dword [ebp]
mov edx, dword [ebp - 0x40]
mov esi, ecx
mov edi, dword [ebp]
mov di, 1
lea ecx, [edi]
lea eax, [ebp - 0x30]
mov edx, dword [ebp]
or dword [ebp - 0x38], 0xbb00bbbb
mov dword [ebp - 0x3c], 0x40
mov edx, 0x64
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x2c], eax
cmp edx, 0
ja 0x4058b6
xor eax, eax
lea eax, [ebp - 0x34]
sub dword [ebp - 0x40], 0x10
mov dword [ebp - 0x34], edx
add dword [ebp - 0x30], 1
add dword [ebp - 0x38], 0x20
mov dword [ebp - 0x40], edx
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x1c]
add esi, 0x41c77f
mov ecx, 0xdb5
rep movsb byte es:[edi], byte [esi]
lea edx, [ebp - 0x3c]
push edx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp]
mov dword [ebp - 0x3c], esi
mov eax, 0x49
mov esi, dword [ebp]
lea ecx, [ecx]
mov eax, 0x80
mov esi, dword [ebp]
mov edx, 2
mov edi, 2
mov esi, dword [ebp - 0x2c]
lea edx, [edx]
lea esi, [ebp - 0x2c]
mov edx, dword [ebp - 0x38]
mov edi, 0x80
mov edi, 0x80
mov eax, 1
mov eax, dword [esp]
mov dword [ebp - 0x38], 8
mov dword [ebp - 0x38], esi
and dword [ebp - 0x3c], 0xff
lea esi, [esi]
xor dword [ebp - 0x3c], 0x1111
lea ecx, [ebp - 0x34]
push ecx
call dword [sym.imp.kernel32.dll_lstrlenA]
lea ecx, [ebp - 0x30]
mov edi, dword [ebp - 0x34]
mov ecx, dword [esp]
mov eax, 0xf5
lea ecx, [ecx]
mov esi, dword [ebp]
lea edx, [edx]
mov dword [ebp - 0x40], edi
mov di, 1
mov di, 1
mov esi, eax
mov ax, 0x40
lea esi, [ebp - 0x3c]
mov edi, 1
mov esi, dword [esp]
mov dword [ebp - 0x2c], edi
lea edx, [edx]
sub eax, eax
add dword [ebp - 0x38], 0x110011
mov ecx, dword [ebp - 0x30]
mov ecx, dword [ebp]
and dword [ebp - 0x38], 0x77
mov ecx, dword [ebp - 0x30]
sub eax, eax
mov dword [ebp - 0x3c], eax
and dword [ebp - 0x40], 0xff
lea edi, [ebp - 0x3c]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x40]
mov edi, edx
lea edi, [ecx]
mov dword [ebp - 0x3c], eax
mov edi, eax
mov edi, 0x80
mov cx, 2
mov esi, 0x15
lea esi, [esi]
mov ecx, dword [ebp - 0x34]
mov edx, dword [ebp - 0x40]
mov dword [ebp - 0x38], edx
lea edi, [ecx]
mov edx, dword [ebp - 0x30]
mov esi, dword [ebp]
lea edi, [ecx]
mov esi, dword [esp]
mov dword [ebp - 0x3c], edx
mov cx, 1
mov dword [ebp - 0x40], edx
mov ecx, dword [ebp]
lea eax, [ebp - 0x34]
push eax
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov ecx, dword [ebp - 0x34]
mov di, 1
mov edi, dword [ebp - 0x30]
mov si, 8
mov dword [ebp - 0x40], edi
mov si, 0x10
lea edi, [edi]
mov edi, dword [ebp]
mov edx, dword [ebp - 0x2c]
mov eax, dword [esp]
mov dword [ebp - 0x38], edi
mov edx, 0xc2
lea edi, [ebp - 0x34]
mov esi, dword [ebp - 0x38]
lea ecx, [ebp - 0x34]
mov eax, 1
mov eax, edx
mov eax, dword [esp]
add dword [ebp - 0x38], 0xff00ff
lea edx, [eax]
mov ecx, 0xd4
sub dword [ebp - 0x38], 0x5555
mov eax, 0x100
mov dword [ebp - 0x30], 0xd
and dword [ebp - 0x40], 0xff00ff
xor eax, eax
cmp dword [ebp - 0x3c], eax
je 0x405a66
mov edx, dword [ebp - 0x38]
and dword [ebp - 0x2c], 0xff00ff
cmp edx, 0xd85
ja 0x405a66
lea edx, [ebp - 0x3c]
push edx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edx, dword [ebp - 0x40]
mov edx, dword [ebp]
lea esi, [edi]
mov dword [ebp - 0x34], edx
lea edi, [ebp - 0x2c]
lea edx, [ebp - 0x38]
mov edi, dword [ebp]
mov di, 2
mov eax, dword [esp]
mov edi, dword [esp]
mov edi, dword [esp]
lea ecx, [edi]
mov ax, 0x54
mov eax, ecx
mov eax, dword [esp]
mov ecx, eax
mov ecx, dword [ebp - 0x40]
xor edi, edi
mov ecx, dword [ebp - 0x2c]
mov esi, 0xb6
xor eax, eax
mov ecx, 0x40
lea edi, [ebp - 0x40]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, dword [ebp - 0x40]
mov di, 0x20
mov esi, dword [ebp]
mov ecx, dword [ebp]
mov edx, ecx
lea esi, [ebp - 0x30]
mov dword [ebp - 0x2c], edi
lea eax, [ebp - 0x40]
lea eax, [eax]
mov esi, 0xa8
mov ecx, dword [ebp]
mov esi, 0xe1
mov edi, 0x10
mov eax, dword [ebp - 0x30]
lea edx, [ebp - 0x34]
lea esi, [eax]
lea eax, [ebp - 0x30]
or dword [ebp - 0x34], 0x88880088
lea eax, [edx]
mov di, 0x20
mov esi, dword [esp]
mov esi, dword [ebp]
mov ecx, 0x100
sub ecx, ecx
cmp ecx, dword [ebp - 0x38]
ja 0x405b19
xor edx, edx
cmp ecx, dword [ebp - 0x2c]
jne 0x405b19
mov dword [ebp - 0x34], ecx
lea eax, [ebp - 0x34]
push eax
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dword [ebp - 0x34], eax
mov edi, ecx
mov dword [ebp - 0x2c], ecx
mov esi, dword [ebp]
mov eax, 1
mov ecx, dword [esp]
lea esi, [esi]
lea edi, [ecx]
mov ecx, dword [ebp]
mov dword [ebp - 0x30], edi
lea esi, [ebp - 0x3c]
lea esi, [ebp - 0x40]
lea eax, [ebp - 0x2c]
lea ecx, [ebp - 0x34]
mov di, 0x42
mov edi, dword [esp]
lea edi, [ecx]
mov dword [ebp - 0x2c], eax
xor ecx, ecx
sub edi, edi
mov dx, 0x40
mov dword [ebp - 0x38], 0x36
and dword [ebp - 0x34], 0x77777777
mov edx, 0
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x40], 0x33
xor dword [ebp - 0x40], 0xff00ff
mov ax, 0x19
lea ecx, [ebp - 0x2c]
push ecx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dword [ebp - 0x34], eax
mov edi, dword [esp]
lea ecx, [eax]
mov ecx, dword [ebp - 0x2c]
mov edi, 2
lea edi, [eax]
lea edi, [edx]
mov cx, 0x40
mov eax, 8
mov edi, dword [esp]
lea esi, [ebp - 0x34]
mov cx, 0xd5
lea ecx, [ecx]
mov dword [ebp - 0x38], edx
mov ecx, 0x9f
lea edi, [ebp - 0x2c]
mov dx, 0x21
lea eax, [eax]
lea edi, [ebp - 0x3c]
sub esi, esi
lea edi, [ebp - 0x2c]
mov edx, dword [esp]
mov dword [ebp - 0x40], 8
mov edx, 0x200
and dword [ebp - 0x30], 0xff
cmp edx, 0x5d
je 0x405c08
mov dword [ebp - 0x30], edx
mov edx, 0x7a
mov eax, dword [ebp - 0x3c]
sub dword [ebp - 0x38], 0x40
or dword [ebp - 0x2c], 0xff
mov dword [ebp - 0x40], edx
lea edx, [ebp - 0x40]
push edx
call dword [sym.imp.kernel32.dll_GetVersionExA]
lea eax, [ebp - 0x3c]
mov si, 0x80
lea edx, [ebp - 0x2c]
mov dword [ebp - 0x40], edx
lea eax, [ebp - 0x40]
mov dword [ebp - 0x3c], edi
lea esi, [edx]
lea ecx, [eax]
lea ecx, [ebp - 0x34]
lea edi, [edi]
mov edi, dword [esp]
mov edi, dword [ebp - 0x34]
lea edx, [edx]
mov dword [ebp - 0x2c], edx
lea eax, [eax]
mov esi, dword [ebp - 0x40]
lea edi, [ebp - 0x2c]
lea edi, [ebp - 0x30]
and dword [ebp - 0x34], 0xaa
mov di, 0x40
sub dword [ebp - 0x30], 0x999999
sub esi, esi
xor eax, eax
xor dword [ebp - 0x30], 0xff00ff
xor dword [ebp - 0x3c], 0xffff
mov eax, 0x1f
mov ecx, 0
xor dword [ebp - 0x2c], 0xffff
mov edi, dword [ebp - 0x20]
mov ecx, 0xc00
mov eax, 0x997859cb
mov esi, 0
mov dword [ebp - 0x40], 0x76
mov dword [ebp - 0x34], esi
xor dword [ebp - 0x2c], 0xffff
cmp dword [ebp - 0x2c], esi
jae 0x405cad
mov edx, 0x100
and dword [ebp - 0x3c], 0xffff
mov esi, dword [edi]
add esi, eax
add esi, eax
mov dword [edi], esi
add edi, 4
loop 0x405cad
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.kernel32.dll_lstrlenA]
lea esi, [ebp - 0x40]
mov ecx, 0x21
lea edi, [ebp - 0x2c]
mov eax, dword [esp]
lea edx, [edx]
mov edx, dword [ebp]
lea esi, [edx]
mov edi, dword [ebp]
mov eax, dword [esp]
mov eax, edx
lea eax, [ecx]
mov edi, 0x47
mov ecx, dword [ebp - 0x3c]
mov edi, 0x4b
mov ecx, dword [ebp]
mov eax, 0x3a
mov esi, 0x64
lea edi, [edx]
sub dword [ebp - 0x38], 0x22000022
xor dword [ebp - 0x3c], 0x55550055
add dword [ebp - 0x3c], 0x44
mov ecx, dword [esp]
lea edi, [ebp - 0x40]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov eax, dword [esp]
lea eax, [ebp - 0x3c]
lea edi, [eax]
lea edi, [esi]
lea edi, [edi]
lea ecx, [edi]
mov edx, dword [ebp]
mov edi, dword [esp]
lea edi, [edi]
mov edi, dword [esp]
lea eax, [eax]
mov esi, dword [ebp - 0x30]
mov edi, dword [esp]
mov di, 0x68
mov esi, dword [ebp]
mov edi, dword [ebp]
lea eax, [eax]
add dword [ebp - 0x3c], 0x666666
mov edx, dword [esp]
xor eax, eax
mov esi, edx
add dword [ebp - 0x30], 0x77
mov eax, 0x100
lea ecx, [ebp - 0x34]
and dword [ebp - 0x38], 0xffff
or dword [ebp - 0x40], 0xffffff
xor dword [ebp - 0x40], 0xffff
mov ecx, dword [ebp - 0x2c]
and dword [ebp - 0x38], 0xffffff
or dword [ebp - 0x2c], 0xff00ff
lea ecx, [ebp - 0x34]
push ecx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov ecx, esi
mov dword [ebp - 0x38], ecx
lea esi, [esi]
mov ecx, dword [ebp - 0x3c]
lea edx, [ebp - 0x40]
mov dword [ebp - 0x40], ecx
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x34], esi
lea edx, [ebp - 0x40]
mov edi, dword [ebp]
mov esi, dword [esp]
mov ecx, dword [ebp - 0x38]
mov edi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x34]
mov eax, 1
mov ax, 0x10
lea ecx, [esi]
add dword [ebp - 0x2c], 0xaa00aa
mov dword [ebp - 0x3c], 0x34
and dword [ebp - 0x40], 0xdd0000dd
lea edi, [edi]
lea edi, [esi]
mov edx, 0x64
add dword [ebp - 0x3c], 0x10
cmp edx, dword [ebp - 0x2c]
ja 0x405e01
sub ecx, ecx
mov cx, 0x5a
and dword [ebp - 0x2c], 0xff
cmp edx, 0x1f
ja 0x405e03
xor edx, edx
lea ecx, [ebp - 0x38]
push ecx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, dword [ebp - 0x3c]
lea edi, [edi]
mov ecx, dword [ebp]
mov edi, 0x40
mov edi, dword [esp]
lea ecx, [ecx]
mov ecx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x40]
mov si, 4
mov ecx, dword [ebp]
mov eax, dword [ebp - 0x34]
mov eax, 0xbe
mov si, 0x40
mov ecx, 2
mov edi, dword [ebp - 0x34]
mov edi, dword [esp]
lea edi, [eax]
lea eax, [eax]
lea ecx, [esi]
xor edi, edi
mov edi, 0x8b
and dword [ebp - 0x34], 0x88880088
mov esi, dword [ebp - 0x1c]
mov ecx, 0
xor ecx, 0x18a1
cmp esi, ecx
jne 0x406438
mov ecx, 0x100
lea ecx, [ebp - 0x34]
mov dword [ebp - 0x30], 0x2e
xor dword [ebp - 0x30], 0xffffff
and dword [ebp - 0x2c], 0xff
test ecx, ecx
ja 0x405e98
mov eax, dword [ebp - 0x30]
xor dword [ebp - 0x3c], 0xff00ff
lea edi, [ebp - 0x40]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov dword [ebp - 0x38], eax
mov edi, 2
mov dword [ebp - 0x3c], ecx
mov ecx, 0x80
mov si, 1
mov cx, 0xdb
mov edi, 0x88
mov edi, dword [esp]
mov eax, dword [ebp]
mov eax, dword [ebp]
mov si, 0xef
mov dword [ebp - 0x40], ecx
lea edx, [eax]
mov ecx, dword [ebp]
lea ecx, [edi]
mov edi, 0x80
mov dword [ebp - 0x40], ecx
mov edi, dword [ebp]
lea ecx, [edi]
mov edi, dword [esp]
lea eax, [ebp - 0x30]
or dword [ebp - 0x38], 0x55000055
or dword [ebp - 0x40], 0x55000055
sub ecx, ecx
and dword [ebp - 0x38], 0xff
xor dword [ebp - 0x40], 0xff00ff
cmp ecx, 0xa2
jne 0x405f1e
mov edx, dword [ebp - 0x2c]
mov ecx, 1
test ecx, ecx
jbe 0x405f1e
lea ecx, [ebp - 0x34]
mov cx, 0x80
or dword [ebp - 0x2c], 0xff00ff
lea esi, [ebp - 0x2c]
push esi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, dword [ebp - 0x3c]
mov edi, 0x25
lea edi, [eax]
mov edi, esi
mov esi, dword [ebp]
lea eax, [eax]
mov esi, dword [esp]
mov edi, eax
mov edx, dword [ebp]
lea eax, [edi]
mov edi, dword [esp]
lea esi, [ebp - 0x3c]
lea edx, [ecx]
mov edx, dword [esp]
mov esi, edi
mov ecx, dword [esp]
mov edi, dword [ebp - 0x34]
add dword [ebp - 0x34], 0x33
sub edi, edi
mov edi, 0xd4
or dword [ebp - 0x34], 0x77000077
mov ax, 0x35
lea edx, [ebp - 0x34]
push edx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, 2
mov ax, 0x5b
mov edx, dword [ebp]
mov ecx, dword [esp]
mov esi, edx
lea edx, [edi]
lea ecx, [eax]
mov edx, 0x80
mov esi, dword [esp]
lea esi, [ebp - 0x2c]
mov dx, 1
mov esi, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x34]
mov edi, dword [ebp]
lea edx, [edi]
lea eax, [ebp - 0x38]
lea edi, [ebp - 0x2c]
lea edi, [edx]
mov dword [ebp - 0x2c], ecx
xor edi, edi
mov edi, esi
mov esi, dword [ebp - 0x40]
xor edx, edx
mov dword [ebp - 0x38], 4
add dword [ebp - 0x34], 0x80
mov dx, 0x79
xor edx, edx
mov eax, 0xc8
mov edx, 4
xor dword [ebp - 0x3c], 0xffffff
and dword [ebp - 0x40], 0xff00ff
mov dword [ebp - 0x40], 0x40
lea edi, [ebp - 0x3c]
push edi
call dword [sym.imp.kernel32.dll_GetVersionExA]
lea eax, [ebp - 0x38]
lea edi, [edi]
mov ecx, dword [ebp - 0x34]
lea ecx, [ecx]
mov edi, dword [esp]
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x3c]
lea eax, [edi]
mov edi, dword [ebp]
mov di, 4
mov edi, dword [ebp - 0x2c]
lea edi, [edi]
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x38]
mov di, 0xce
mov edi, dword [ebp - 0x2c]
mov edi, 2
mov eax, 4
sub edi, edi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], 0x10
lea edx, [eax]
xor eax, eax
and dword [ebp - 0x40], 0xff00ff
cmp eax, dword [ebp - 0x38]
jne 0x406062
mov ecx, 0x300
add dword [ebp - 0x3c], 0x62
test eax, eax
ja 0x406062
lea esi, [ebp - 0x38]
push esi
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dword [ebp - 0x38], eax
mov edx, dword [esp]
lea edi, [eax]
mov eax, edx
mov eax, dword [esp]
mov edx, dword [esp]
lea eax, [esi]
lea edx, [edx]
mov edi, esi
mov esi, dword [ebp]
mov eax, edi
mov esi, dword [ebp]
mov eax, 0xbb
mov si, 0x23
mov ecx, dword [ebp - 0x38]
lea eax, [ebp - 0x30]
mov esi, 4
mov ecx, esi
xor esi, esi
xor dword [ebp - 0x40], 0xaa00aaaa
sub ecx, ecx
mov si, 0x8b
mov dword [ebp - 0x30], edx
mov ecx, 0x12c
mov eax, 0x200
xor eax, eax
add dword [ebp - 0x30], 8
sub dword [ebp - 0x2c], 0x31
mov dword [ebp - 0x40], 0x2f
xor ecx, ecx
mov dword [ebp - 0x34], ecx
cmp ecx, 0
jb 0x4060f0
mov edx, 0
lea edx, [ebp - 0x3c]
mov dword [ebp - 0x30], 4
and dword [ebp - 0x2c], 0xff
lea edx, [ebp - 0x38]
lea esi, [ebp - 0x2c]
push esi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov dword [ebp - 0x38], eax
mov edi, dword [ebp - 0x40]
mov edx, dword [ebp]
mov ax, 0x20
lea edi, [ecx]
mov di, 0x97
mov dword [ebp - 0x3c], ecx
mov cx, 0x20
mov ecx, 0x68
mov esi, 1
mov esi, dword [esp]
lea ecx, [ecx]
mov edx, dword [esp]
mov esi, dword [esp]
lea edx, [esi]
lea ecx, [ebp - 0x40]
mov dx, 0xb7
mov edx, dword [ebp - 0x3c]
xor dword [ebp - 0x2c], 0x99990099
mov dword [ebp - 0x2c], 2
add dword [ebp - 0x2c], 0xaa
and dword [ebp - 0x38], 0xaaaa
mov ecx, 0x12
lea esi, [ebp - 0x3c]
push esi
call dword [sym.imp.kernel32.dll_GetVersionExA]
lea eax, [ecx]
mov eax, dword [ebp]
mov esi, dword [ebp - 0x38]
mov edx, dword [esp]
mov edx, dword [ebp]
mov esi, dword [ebp]
mov dword [ebp - 0x40], edi
mov dx, 0x9b
mov edi, esi
mov dword [ebp - 0x38], edx
mov edx, dword [esp]
mov eax, 2
mov dword [ebp - 0x38], eax
lea eax, [eax]
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x2c], eax
mov edi, 0x8a
sub ecx, ecx
lea edi, [edi]
sub dword [ebp - 0x30], 0x660066
xor dword [ebp - 0x34], 0xaa00aaaa
mov di, 0x40
lea edx, [ebp - 0x38]
push edx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov esi, 4
mov dword [ebp - 0x34], esi
mov ecx, dword [esp]
mov edx, dword [ebp - 0x2c]
mov edi, dword [ebp]
mov edi, dword [ebp - 0x34]
mov edi, dword [ebp]
lea esi, [ebp - 0x2c]
mov edi, dword [esp]
lea edx, [edx]
mov edx, dword [esp]
lea esi, [edi]
mov ecx, dword [esp]
lea edi, [edi]
lea esi, [esi]
mov edi, dword [esp]
lea edi, [esi]
mov esi, 8
xor ecx, ecx
mov edi, ecx
mov edx, dword [ebp]
add dword [ebp - 0x30], 0x555555
lea esi, [ebp - 0x30]
push esi
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dword [ebp - 0x3c], eax
mov edx, dword [esp]
lea esi, [ebp - 0x30]
mov edi, eax
mov eax, dword [ebp - 0x3c]
mov edi, 0xc2
mov edx, 8
lea edi, [eax]
mov eax, dword [esp]
mov edx, 1
mov edx, 0xe5
mov dword [ebp - 0x38], esi
mov cx, 0x40
lea edi, [edi]
mov eax, 0x20
mov di, 0xd4
mov edx, dword [esp]
lea esi, [eax]
mov ecx, dword [ebp - 0x40]
mov dword [ebp - 0x40], 0x40
lea edi, [esi]
lea esi, [edx]
mov edi, dword [ebp]
mov edx, 0x100
xor dword [ebp - 0x30], 0xff
mov eax, dword [ebp - 0x2c]
and dword [ebp - 0x38], 0xffffff
mov dword [ebp - 0x38], 1
mov dx, 0x1d
push str.kernel32.DLL
call dword [sym.imp.kernel32.dll_GetModuleHandleA]
mov ebx, eax
sub esi, esi
mov si, 0x4c
and dword [ebp - 0x38], 0xffffff
add dword [ebp - 0x30], 0x6e
mov ecx, 0x10
mov ecx, 0x200
sub dword [ebp - 0x2c], 0x5b
mov edi, dword [ebp - 0x28]
sub esi, esi
mov ecx, dword [ebp - 0x40]
and dword [ebp - 0x3c], 0xffff
push edi
xor eax, eax
mov ecx, 0x57
sub ecx, ecx
lea eax, [ebp - 0x38]
or dword [ebp - 0x2c], 0xffffff
cmp eax, 0x75f
ja 0x4062d5
mov ecx, 0
xor ecx, ecx
mov ecx, 0x39
mov ax, 0x40
ret
mov eax, 0x64
or dword [ebp - 0x2c], 0xffffff
sub edx, edx
mov dword [ebp - 0x3c], 0x20
or dword [ebp - 0x34], 0xffffff
mov eax, 0x300
mov dword [ebp - 0x2c], 0x20
xor edx, edx
lea edx, [ebp - 0x2c]
and dword [ebp - 0x40], 0xffffff
lea edx, [ebp - 0x40]
push edx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov edx, dword [ebp]
mov ecx, dword [ebp - 0x34]
mov dx, 8
mov cx, 0x10
lea edi, [edi]
mov eax, edi
mov edi, dword [ebp - 0x34]
lea ecx, [ebp - 0x34]
mov esi, dword [ebp]
mov dword [ebp - 0x2c], ecx
mov edi, dword [ebp - 0x34]
lea edx, [ebp - 0x2c]
mov dword [ebp - 0x2c], eax
mov edi, 0x10
lea edi, [edi]
lea ecx, [ecx]
mov esi, dword [esp]
or dword [ebp - 0x34], 0xbb
mov esi, 0x5b
sub edi, edi
mov dword [ebp - 0x30], 0x40
mov edi, edx
lea esi, [ebp - 0x3c]
push esi
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dword [ebp - 0x30], eax
mov esi, dword [ebp]
mov edx, eax
mov edi, esi
lea edi, [edi]
mov edi, dword [ebp]
lea edx, [edx]
mov ecx, dword [ebp - 0x30]
mov esi, edi
mov esi, dword [ebp - 0x34]
mov dx, 2
mov eax, dword [ebp]
lea edi, [eax]
mov edi, dword [ebp - 0x30]
mov esi, dword [ebp - 0x34]
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x3c], esi
mov ecx, dword [esp]
lea edx, [esi]
mov si, 0x40
xor eax, eax
mov edx, 6
mov dword [ebp - 0x30], edx
sub eax, eax
mov dword [ebp - 0x34], eax
cmp eax, dword [ebp - 0x30]
jbe 0x406519
sub edx, edx
sub eax, eax
mov dx, 0x71
xor dword [ebp - 0x40], 0xffffff
sub eax, eax
mov ax, 0x5b
cmp eax, 0x10e
je 0x406552
mov ecx, 0x100
mov ecx, 0x66
cmp ecx, 0xf76
jbe 0x406552
and dword [ebp - 0x3c], 0xff00ff
and dword [ebp - 0x30], 0xffff
lea edx, [ebp - 0x40]
push edx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov dword [ebp - 0x3c], edi
lea edi, [ebp - 0x30]
mov edx, 0x10
lea edx, [edx]
mov edx, dword [esp]
lea eax, [ebp - 0x2c]
mov edi, 0x66
mov esi, dword [ebp]
mov eax, esi
mov dword [ebp - 0x38], edx
mov edi, dword [ebp - 0x3c]
lea ecx, [ebp - 0x40]
mov edi, eax
mov edi, 0x20
mov esi, 0xb6
lea edx, [edx]
mov edi, dword [esp]
mov edi, dword [ebp]
lea edi, [ecx]
sub edx, edx
mov dword [ebp - 0x2c], esi
mov edi, dword [ebp - 0x38]
lea ecx, [ebp - 0x2c]
push ecx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov dword [ebp - 0x30], eax
mov edx, dword [ebp - 0x30]
mov ecx, 0x20
mov esi, dword [ebp]
lea edx, [edx]
lea edi, [ebp - 0x2c]
mov si, 0xf3
mov esi, dword [esp]
lea edi, [edi]
mov ecx, dword [esp]
mov cx, 0x80
mov ecx, 0x20
lea eax, [eax]
mov dword [ebp - 0x34], eax
mov ecx, 0x66
lea edi, [edi]
mov di, 1
lea esi, [esi]
sub dword [ebp - 0x30], 0x33330033
mov edi, dword [ebp]
mov dx, 2
and dword [ebp - 0x30], 0x77777777
add dword [ebp - 0x38], 0xeeee
lea ecx, [ebp - 0x38]
push ecx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dword [ebp - 0x2c], edx
mov ecx, 0x67
lea ecx, [esi]
mov edx, dword [ebp]
lea eax, [ecx]
lea ecx, [ebp - 0x30]
mov ecx, edx
mov ecx, edi
mov esi, edi
mov eax, dword [esp]
mov eax, dword [ebp]
mov ecx, dword [ebp]
lea ecx, [esi]
lea edx, [ebp - 0x2c]
mov eax, 0xdb
lea eax, [esi]
mov edi, ecx
add dword [ebp - 0x3c], 0x777777
or dword [ebp - 0x40], 0x33003333
sub edx, edx
lea edx, [eax]
and dword [ebp - 0x34], 0x11001111
mov edx, 0xc8
mov dword [ebp - 0x3c], edx
xor edx, edx
mov dword [ebp - 0x34], edx
lea edx, [ebp - 0x40]
cmp edx, dword [ebp - 0x38]
jbe 0x406679
xor eax, eax
sub dword [ebp - 0x30], 0x27
cmp edx, 0x1c5
jb 0x406679
sub dword [ebp - 0x34], 2
lea ecx, [ebp - 0x38]
push ecx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov cx, 0x80
lea edx, [ecx]
mov edi, dword [ebp]
mov edi, dword [ebp - 0x38]
lea edi, [edi]
mov dword [ebp - 0x2c], eax
mov esi, 0xc1
mov ax, 0xa1
mov edi, esi
lea edx, [ebp - 0x2c]
lea esi, [ebp - 0x3c]
lea esi, [ebp - 0x3c]
mov dword [ebp - 0x38], edx
mov esi, 0xc7
mov eax, dword [esp]
lea esi, [edi]
mov dword [ebp - 0x3c], edi
mov edi, dword [ebp - 0x40]
mov si, 0x92
and dword [ebp - 0x34], 0x33000033
xor dword [ebp - 0x40], 0xcccc00cc
mov dword [ebp - 0x34], edi
lea ecx, [ebp - 0x30]
push ecx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, dword [ebp - 0x34]
lea edx, [ebp - 0x2c]
lea ecx, [ecx]
lea ecx, [edi]
lea edi, [edi]
lea edi, [edi]
mov edi, dword [ebp - 0x2c]
mov edx, 3
mov di, 0xeb
mov dword [ebp - 0x2c], edx
mov edx, dword [esp]
mov dword [ebp - 0x2c], ecx
mov esi, edi
lea eax, [eax]
lea esi, [esi]
mov si, 0x10
mov dx, 0xd
and dword [ebp - 0x2c], 0x880088
mov edi, 0xab
mov dword [ebp - 0x2c], edi
mov edi, dword [ebp]
mov dword [ebp - 0x30], edi
mov edx, 0x12c
mov edx, 0x10
sub edx, edx
add dword [ebp - 0x2c], 0x4c
cmp edx, 0
ja 0x406746
mov eax, dword [ebp - 0x34]
xor dword [ebp - 0x38], 0xff
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x406746
mov edx, 0x56
lea edx, [ebp - 0x30]
push edx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov ecx, dword [ebp - 0x3c]
lea esi, [ebp - 0x38]
lea eax, [eax]
lea ecx, [ebp - 0x2c]
mov dx, 0x10
mov edi, 0x80
mov eax, dword [esp]
mov dword [ebp - 0x30], edx
mov eax, 4
mov eax, ecx
lea eax, [edx]
mov eax, 4
mov esi, dword [ebp - 0x38]
mov eax, dword [ebp]
mov edi, dword [ebp - 0x40]
mov edi, 4
mov edi, ecx
xor dword [ebp - 0x3c], 0xbb00bb
mov dword [ebp - 0x2c], eax
mov esi, edi
mov esi, dword [ebp - 0x2c]
and dword [ebp - 0x3c], 0xaaaaaa
lea ecx, [ebp - 0x38]
push ecx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov dword [ebp - 0x3c], edx
lea edx, [edx]
mov edi, dword [ebp - 0x40]
lea edi, [ebp - 0x40]
mov esi, dword [ebp]
mov eax, 1
mov edi, dword [ebp]
lea edi, [edx]
mov ecx, 0xaf
mov edi, dword [ebp - 0x3c]
lea ecx, [ecx]
mov edx, dword [ebp - 0x30]
lea esi, [edi]
mov edi, dword [ebp]
lea edi, [edi]
mov dword [ebp - 0x3c], ecx
lea edi, [ebp - 0x34]
and dword [ebp - 0x3c], 0x44004444
mov dx, 0x80
mov dword [ebp - 0x38], esi
mov edi, dword [ebp - 0x3c]
xor edx, edx
sub ecx, ecx
add dword [ebp - 0x3c], 4
xor ecx, ecx
cmp ecx, 0xcb8
jb 0x406808
xor edx, edx
mov cx, 0x31
lea edi, [ebp - 0x3c]
push edi
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov ecx, 8
mov dword [ebp - 0x2c], ecx
mov ecx, dword [esp]
mov ecx, dword [ebp - 0x3c]
mov edi, dword [esp]
lea edi, [ebp - 0x30]
lea edx, [edi]
mov esi, dword [ebp - 0x30]
mov edi, 8
lea edi, [edi]
mov ax, 4
mov edi, dword [ebp - 0x34]
mov edi, 4
mov esi, 0x40
mov dword [ebp - 0x2c], edx
lea esi, [ebp - 0x3c]
mov ecx, dword [esp]
sub edi, edi
xor dword [ebp - 0x38], 0x55005555
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x3c], 0xe9
mov edi, dword [ebp]
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], 8
cmp ecx, 0x79
jb 0x40687a
mov edx, 0
mov cx, 0x6e
lea esi, [ebp - 0x3c]
push esi
call dword [sym.imp.kernel32.dll_lstrlenA]
lea edi, [ecx]
lea edx, [edi]
mov dword [ebp - 0x38], edi
mov edx, esi
mov dword [ebp - 0x30], edi
lea eax, [ebp - 0x40]
mov ecx, dword [ebp]
mov edi, dword [ebp - 0x40]
mov edi, dword [ebp]
mov dword [ebp - 0x30], edi
mov edi, 0x20
mov edi, 0x60
mov ecx, dword [ebp]
mov edi, eax
mov esi, eax
mov eax, 0x2f
mov dx, 0x80
mov dword [ebp - 0x34], 0x80
xor dword [ebp - 0x40], 0x33330033
mov cx, 0x80
or dword [ebp - 0x3c], 0xbbbbbbbb
mov dword [ebp - 0x3c], edx
xor eax, eax
mov ecx, 0
or dword [ebp - 0x34], 0xffff
lea edx, [ebp - 0x2c]
push edx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov esi, edi
lea eax, [ebp - 0x40]
mov edx, 0x20
mov dword [ebp - 0x34], ecx
mov si, 0x1e
mov esi, 1
lea edx, [ebp - 0x38]
mov dx, 2
mov di, 4
lea ecx, [ebp - 0x38]
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp]
lea eax, [ebp - 0x2c]
mov eax, edi
lea eax, [eax]
mov edi, dword [ebp - 0x30]
mov esi, eax
mov eax, edx
mov dword [ebp - 0x2c], eax
xor esi, esi
lea eax, [ebp - 0x40]
and dword [ebp - 0x30], 0xbb00bbbb
xor ecx, ecx
mov cx, 0x6c
xor dword [ebp - 0x34], 0xffff
mov dword [ebp - 0x3c], 0x65
cmp ecx, 0xaf3
jne 0x40695b
mov eax, dword [ebp - 0x3c]
cmp ecx, 0x93
jbe 0x40695b
push 0x40ba8d
call dword [sym.imp.kernel32.dll_LoadLibraryA]
mov dword [ebp - 4], eax
lea edi, [ebp - 0x38]
push edi
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov edi, dword [ebp - 0x30]
lea edx, [ebp - 0x30]
mov edi, 0x7b
lea edx, [edx]
mov edi, dword [ebp - 0x3c]
mov dword [ebp - 0x40], edi
mov esi, dword [esp]
mov edi, dword [esp]
mov esi, dword [ebp - 0x38]
lea eax, [ebp - 0x40]
mov dword [ebp - 0x2c], edi
mov eax, edi
mov dword [ebp - 0x30], ecx
lea esi, [esi]
lea esi, [esi]
mov di, 0x23
mov ecx, dword [esp]
and dword [ebp - 0x30], 0x88008888
sub dword [ebp - 0x2c], 0xee
and dword [ebp - 0x3c], 0x88888888
add dword [ebp - 0x3c], 0xffff
mov ax, 8
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dword [ebp - 0x34], eax
mov ecx, edx
mov eax, dword [ebp - 0x2c]
lea esi, [ecx]
mov edx, dword [ebp]
mov eax, dword [ebp - 0x2c]
mov esi, 0x5a
mov dword [ebp - 0x30], esi
lea eax, [eax]
mov ecx, dword [esp]
mov di, 0x65
lea edx, [ebp - 0x40]
lea edx, [edx]
mov cx, 0x10
mov eax, edi
mov eax, 0x20
mov ecx, 0xc0
mov eax, dword [esp]
sub dword [ebp - 0x2c], 0xdd00dd
lea eax, [eax]
and dword [ebp - 0x40], 0x22000022
mov eax, dword [esp]
lea edi, [edx]
xor edx, edx
lea edx, [ebp - 0x34]
mov dword [ebp - 0x40], 0x40
sub dword [ebp - 0x3c], 4
xor eax, eax
lea edx, [ebp - 0x2c]
push edx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dx, 0x5b
lea ecx, [ebp - 0x34]
lea edx, [esi]
lea edi, [edi]
mov edi, dword [esp]
mov edi, dword [ebp]
lea esi, [edx]
lea edx, [edx]
mov ecx, dword [esp]
lea esi, [edi]
mov di, 0xdc
mov eax, dword [ebp - 0x34]
mov ecx, 0x68
mov esi, 0x8e
mov edi, edx
mov edi, dword [esp]
mov edi, 0x20
mov eax, dword [esp]
mov edi, dword [ebp]
lea esi, [esi]
lea edi, [ebp - 0x3c]
or dword [ebp - 0x2c], 0x44444444
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov edx, dword [ebp]
mov edi, esi
lea ecx, [ecx]
mov edi, 0xab
mov dx, 1
mov edi, 2
lea edi, [esi]
mov edi, dword [ebp - 0x3c]
lea edi, [ebp - 0x3c]
lea esi, [esi]
lea edx, [ecx]
mov dword [ebp - 0x40], esi
mov ecx, 0x10
mov dword [ebp - 0x30], ecx
mov edx, dword [esp]
lea eax, [ebp - 0x38]
mov esi, 0x1d
and dword [ebp - 0x3c], 0x77
mov dword [ebp - 0x30], ecx
lea esi, [esi]
mov esi, ecx
and dword [ebp - 0x40], 0xeeeeeeee
sub edx, edx
mov ecx, 0x4c
mov ecx, 0xf
or dword [ebp - 0x30], 0xffffff
add dword [ebp - 0x2c], 1
sub edx, edx
cmp dword [ebp - 0x38], edx
je 0x406afe
add dword [ebp - 0x38], 0x40
mov ecx, 0
add dword [ebp - 0x34], 8
lea esi, [ebp - 0x2c]
push esi
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov esi, edi
mov ecx, dword [ebp]
lea edi, [eax]
mov edi, 0x40
lea esi, [ebp - 0x38]
mov di, 9
mov ecx, 8
lea eax, [eax]
mov edi, dword [ebp]
mov dword [ebp - 0x38], eax
lea edi, [edi]
mov dword [ebp - 0x2c], edi
lea edi, [ebp - 0x3c]
lea edi, [edi]
mov dword [ebp - 0x40], edi
lea edi, [eax]
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x30], 0x2d
and dword [ebp - 0x3c], 0xffffff
sub dword [ebp - 0x40], 0x3333
mov si, 0x26
or dword [ebp - 0x38], 0x999999
mov eax, dword [ebp - 0x34]
sub eax, eax
sub dword [ebp - 0x40], 0x4a
cmp eax, 0xa7a
je 0x406b77
mov ecx, 0xc8
xor dword [ebp - 0x3c], 0xffffff
lea edi, [ebp - 0x40]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, dword [ebp]
mov eax, dword [esp]
mov edx, edi
lea esi, [ecx]
mov edx, dword [esp]
lea esi, [esi]
mov ecx, dword [ebp - 0x40]
mov edx, dword [esp]
mov edi, edx
mov ax, 8
mov esi, dword [ebp - 0x30]
lea eax, [eax]
mov esi, 0x13
lea ecx, [ebp - 0x38]
lea edi, [ecx]
lea esi, [esi]
mov edi, 8
lea esi, [edi]
sub edi, edi
lea ecx, [ecx]
lea ecx, [ecx]
mov esi, 0x1c
mov edx, 0x64
and dword [ebp - 0x3c], 0xff
add dword [ebp - 0x3c], 0x16
test edx, edx
jne 0x406be7
mov eax, dword [ebp - 0x2c]
xor eax, eax
test edx, edx
ja 0x406be7
mov dx, 6
add dword [ebp - 0x38], 0x80
and dword [ebp - 0x30], 0xff
and dword [ebp - 0x40], 0xff
lea edi, [ebp - 0x34]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov eax, dword [ebp - 0x30]
mov edi, dword [ebp - 0x34]
mov si, 0xaf
mov edi, dword [ebp]
mov edi, esi
lea eax, [eax]
lea ecx, [edi]
mov edi, 0x20
mov dx, 2
mov dword [ebp - 0x2c], eax
lea edx, [edi]
mov edi, dword [ebp]
lea edx, [edx]
mov cx, 0x40
mov edi, dword [ebp]
mov eax, ecx
mov cx, 2
lea esi, [esi]
and dword [ebp - 0x3c], 0x33000033
mov edx, 0x97
mov si, 2
mov esi, dword [ebp - 0x40]
mov eax, 0
sub eax, eax
mov eax, 2
and dword [ebp - 0x40], 0xff00ff
cmp eax, 0
jb 0x406c6f
mov ecx, 0x12c
sub eax, eax
and dword [ebp - 0x38], 0xff
sub eax, eax
mov dword [ebp - 0x34], 0x3a
add dword [ebp - 0x40], 0x20
push str.VerFindFileA
push dword [ebp - 4]
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [ebp - 0x18], eax
lea esi, [ebp - 0x40]
push esi
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov di, 1
mov edx, esi
mov ecx, dword [ebp]
lea edi, [ebp - 0x3c]
mov edx, dword [ebp]
mov esi, 0x2b
mov dword [ebp - 0x40], eax
mov di, 0xee
lea esi, [ebp - 0x40]
mov edi, esi
mov ecx, dword [esp]
lea edi, [ebp - 0x3c]
mov edi, dword [esp]
mov edi, dword [ebp]
mov edx, ecx
lea eax, [esi]
lea eax, [ecx]
lea ecx, [ebp - 0x2c]
and dword [ebp - 0x34], 0xeeee00ee
lea esi, [ebp - 0x40]
mov esi, 8
mov di, 0x9b
xor edx, edx
mov eax, dword [ebp - 0x34]
sub dword [ebp - 0x2c], 0x14
mov dword [ebp - 0x34], 0x20
lea eax, [ebp - 0x34]
push eax
call dword [sym.imp.kernel32.dll_lstrlenA]
mov edi, dword [ebp]
mov edx, dword [ebp]
lea edi, [esi]
mov edx, dword [esp]
mov edi, edx
mov edx, dword [ebp]
lea eax, [ebp - 0x2c]
lea edi, [edi]
mov edx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x2c]
lea edi, [ebp - 0x34]
mov ax, 0x42
mov esi, dword [esp]
mov esi, 2
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp]
lea edi, [esi]
mov edx, dword [esp]
lea edx, [ecx]
and dword [ebp - 0x38], 0xff0000ff
mov edi, 0xb6
lea edi, [ebp - 0x3c]
push edi
call dword [sym.imp.kernel32.dll_GetVersionExA]
lea esi, [edi]
lea edi, [ebp - 0x3c]
mov esi, dword [ebp - 0x40]
lea eax, [ebp - 0x34]
mov edx, edi
lea eax, [eax]
mov cx, 0x8a
mov edi, dword [esp]
mov esi, dword [ebp]
mov dword [ebp - 0x30], edi
lea edi, [ebp - 0x38]
mov eax, dword [ebp]
lea ecx, [ebp - 0x30]
lea eax, [eax]
mov esi, 0x80
mov dword [ebp - 0x30], edx
lea edi, [ebp - 0x34]
sub dword [ebp - 0x38], 0xeeee00ee
lea edi, [eax]
xor esi, esi
sub eax, eax
mov dword [ebp - 0x34], ecx
lea edi, [ebp - 0x3c]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
lea edi, [ebp - 0x38]
mov eax, dword [ebp]
mov edx, dword [ebp - 0x30]
lea edi, [edx]
mov ecx, dword [esp]
lea esi, [esi]
mov edx, dword [ebp]
mov esi, dword [esp]
mov dword [ebp - 0x3c], edi
mov eax, dword [esp]
mov edx, edi
mov si, 4
mov edi, dword [ebp]
mov ecx, dword [esp]
mov edx, 0x19
mov eax, 0x40
lea esi, [eax]
sub edx, edx
and dword [ebp - 0x2c], 0x44440044
lea edi, [edx]
mov ecx, dword [esp]
mov esi, eax
lea edx, [ebp - 0x40]
push edx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov esi, eax
mov edi, dword [esp]
lea edi, [edi]
mov eax, dword [ebp - 0x34]
lea ecx, [edi]
lea edx, [ebp - 0x38]
lea edi, [edi]
mov dx, 1
mov edx, dword [ebp - 0x2c]
mov ecx, edx
lea edi, [ebp - 0x30]
mov edx, dword [esp]
lea edi, [ebp - 0x3c]
lea edi, [edi]
lea esi, [ebp - 0x34]
lea edi, [ebp - 0x30]
mov eax, dword [esp]
sub eax, eax
mov ecx, dword [esp]
lea esi, [ebp - 0x30]
mov edi, dword [esp]
and dword [ebp - 0x2c], 0x444444
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.kernel32.dll_lstrlenA]
mov esi, 0x33
lea esi, [esi]
lea esi, [esi]
mov dword [ebp - 0x38], ecx
mov si, 0x40
mov ecx, dword [ebp - 0x40]
lea ecx, [edi]
mov ax, 0x21
mov dword [ebp - 0x3c], esi
mov eax, esi
mov eax, esi
lea eax, [eax]
mov edi, edx
mov ecx, dword [ebp]
mov eax, dword [ebp]
mov edi, dword [esp]
mov dword [ebp - 0x40], esi
and dword [ebp - 0x34], 0xaa00aaaa
lea edi, [edi]
xor esi, esi
mov edi, dword [ebp - 0x30]
add dword [ebp - 0x2c], 0x6666
mov ecx, 0
mov cx, 0x42
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x3c], 2
cmp ecx, dword [ebp - 0x40]
jbe 0x406e91
xor eax, eax
xor eax, eax
cmp dword [ebp - 0x38], eax
je 0x406e91
lea edi, [ebp - 0x2c]
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
mov esi, 0x20
mov edi, 4
mov edx, dword [ebp - 0x40]
mov dword [ebp - 0x34], ecx
lea edi, [edi]
mov dword [ebp - 0x40], edi
lea edx, [edx]
mov eax, ecx
lea eax, [eax]
mov esi, dword [ebp - 0x3c]
mov eax, dword [esp]
mov cx, 1
lea esi, [ecx]
mov dword [ebp - 0x30], edi
mov ax, 0x40
lea ecx, [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
mov edx, 2
xor dword [ebp - 0x2c], 0x99009999
mov eax, dword [esp]
mov edi, 0xc3
sub edx, edx
lea ecx, [ebp - 0x40]
push ecx
call dword [sym.imp.kernel32.dll_GetVersionExA]
lea edi, [edi]
mov edi, dword [ebp]
mov dword [ebp - 0x2c], eax
mov esi, dword [ebp - 0x38]
mov eax, esi
mov di, 8
mov esi, dword [ebp]
lea eax, [eax]
mov dword [ebp - 0x40], edi
mov edi, dword [ebp - 0x40]
lea esi, [eax]
mov esi, dword [ebp - 0x40]
mov edi, dword [ebp]
mov edx, dword [esp]
mov si, 0x10
mov edi, ecx
lea edi, [ebp - 0x38]
lea edi, [edi]
lea edi, [edi]
lea eax, [ebp - 0x34]
sub edi, edi
lea edi, [edi]
mov eax, 0x200
mov ax, 0x65
xor dword [ebp - 0x38], 0xff
lea eax, [ebp - 0x30]
or dword [ebp - 0x34], 0xff00ff
cmp eax, 0xf64
jbe 0x406f59
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x3c], ecx
and dword [ebp - 0x34], 0xff
lea ecx, [ebp - 0x40]
push ecx
call dword [sym.imp.kernel32.dll_lstrlenA]
mov dword [ebp - 0x3c], eax
lea edx, [edx]
lea edx, [edi]
mov si, 0x20
mov eax, dword [ebp]
mov edi, dword [ebp]
mov edx, dword [ebp - 0x40]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], eax
mov esi, 0x31
mov di, 0xb5
mov di, 4
mov eax, dword [ebp]
mov esi, dword [ebp - 0x38]
mov dword [ebp - 0x2c], edi
lea edi, [edi]
mov edi, eax
mov edx, dword [esp]
and dword [ebp - 0x2c], 0x550055
mov dword [ebp - 0x30], 1
mov eax, dword [ebp]
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x38], 0x87
sub edx, edx
xor eax, eax
xor eax, eax
lea edx, [ebp - 0x40]
push edx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov dword [ebp - 0x38], eax
mov esi, dword [esp]
mov ecx, 0x40
lea edi, [edi]
mov eax, esi
mov ecx, edi
mov edi, dword [ebp]
mov dword [ebp - 0x40], edi
mov edi, dword [ebp]
lea esi, [edi]
mov edx, edi
mov edx, 0x40
lea edx, [ebp - 0x30]
mov edx, dword [ebp - 0x38]
mov esi, ecx
mov dword [ebp - 0x2c], edi
mov edi, 4
mov edi, dword [ebp]
and dword [ebp - 0x2c], 0xbbbb
and dword [ebp - 0x3c], 0x550055
sub dword [ebp - 0x30], 0xcccccccc
xor eax, eax
mov edi, dword [ebp]
mov edx, 0x100
and dword [ebp - 0x2c], 0xffffff
sub dword [ebp - 0x34], 1
test edx, edx
jb 0x40703c
mov eax, 0x12c
and dword [ebp - 0x38], 0xff00ff
sub edx, edx
sub edx, edx
lea edx, [ebp - 0x38]
mov dword [ebp - 0x30], eax
lea edx, [ebp - 0x34]
push edx
call dword [sym.imp.kernel32.dll_GetVersionExA]
mov eax, dword [esp]
mov dword [ebp - 0x3c], edi
mov edi, dword [ebp]
mov si, 0x20
lea ecx, [ecx]
mov ax, 4
mov esi, dword [ebp - 0x40]
mov di, 1
mov dword [ebp - 0x2c], edi
mov edi, dword [ebp - 0x38]
lea edx, [edx]
mov edi, dword [esp]
mov ecx, dword [ebp]
lea ecx, [edi]
mov dword [ebp - 0x30], eax
lea edi, [ebp - 0x30]
mov si, 4
mov di, 0x10
mov edi, 0x22
mov di, 0xd4
mov dword [ebp - 0x38], edi
lea esi, [ebp - 0x34]
mov ecx, 0
and dword [ebp - 0x2c], 0xff
cmp ecx, 0x3f
jae 0x4070be
mov edx, 0x200
add dword [ebp - 0x34], 4
sub ecx, ecx
add dword [ebp - 0x30], 2
or dword [ebp - 0x40], 0xffffff
sub edx, edx
mov edx, 0x5c
ret