Function at 0x42a740
Capabilities:
Contain obfuscated stackstrings
Get file size
Read .ini file
Read file on windows
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x450959
mov eax, dword fs:[0]
push eax
sub esp, 0xb3c
mov eax, dword [0x46d45c]
xor eax, ebp
mov dword [ebp - 0x30], eax
push esi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
cmp dword [0x46f8d0], 0
jne 0x42a7ad
push str.GetSystemDefaultLocaleName
push 0x45dc40
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x46f8d0], eax
push str.GetUserDefaultLocaleName
push str.Kernel32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x46f8cc], eax
mov ecx, dword [ebp + 0xc]
call fcn.0042d950
lea ecx, [ebp - 0x28]
call fcn.0042d9f0
mov dword [ebp - 4], 0
mov dword [ebp - 0x2c], 0
jmp 0x42a7d6
mov eax, dword [ebp - 0x2c]
add eax, 1
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x2c]
push ecx
push 0x45dc94
lea edx, [ebp - 0x2a4]
push edx
call fcn.00438ac1
add esp, 0xc
mov ax, word [0x45dca8]
mov word [ebp - 0x23c], ax
push 0x206
push 0
lea ecx, [ebp - 0x23a]
push ecx
call fcn.00438240
add esp, 0xc
mov ecx, dword [ebp + 8]
call fcn.00416b30
push eax
push 0x104
lea edx, [ebp - 0x23c]
push edx
push 0x45dcac
lea eax, [ebp - 0x2a4]
push eax
push 0x45dcb0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
test eax, eax
jne 0x42a843
jmp 0x42a86c
lea ecx, [ebp - 0x23c]
push ecx
call fcn.0043a89e
add esp, 4
mov dword [ebp - 0x2a8], eax
lea edx, [ebp - 0x2a8]
push edx
lea ecx, [ebp - 0x28]
call fcn.0042db30
jmp 0x42a7cd
mov dword [ebp - 0x2ac], 0
jmp 0x42a887
mov eax, dword [ebp - 0x2ac]
add eax, 1
mov dword [ebp - 0x2ac], eax
mov cx, word [0x45dcbc]
mov word [ebp - 0x4b4], cx
push 0x206
push 0
lea edx, [ebp - 0x4b2]
push edx
call fcn.00438240
add esp, 0xc
push 0x45dcc0
lea ecx, [ebp - 0x998]
call fcn.00416830
mov byte [ebp - 4], 1
lea eax, [ebp - 0x998]
push eax
lea ecx, [ebp - 0x99c]
push ecx
mov ecx, dword [ebp + 8]
call fcn.00416930
mov dword [ebp - 0xa8c], eax
mov edx, dword [ebp - 0xa8c]
mov dword [ebp - 0xa90], edx
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0xa90]
call fcn.00416b30
push eax
push 0x104
lea eax, [ebp - 0x4b4]
push eax
push 0x45dcd4
push 0x45dcd8
mov ecx, dword [ebp - 0x2ac]
push ecx
lea edx, [ebp - 0x9a0]
push edx
call fcn.0042a6b0
add esp, 8
mov dword [ebp - 0xa94], eax
mov ecx, dword [ebp - 0xa94]
call fcn.00416b30
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0x991], al
lea ecx, [ebp - 0x9a0]
call fcn.004168d0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x99c]
call fcn.004168d0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x998]
call fcn.004168d0
movzx eax, byte [ebp - 0x991]
test eax, eax
je 0x42a97e
jmp 0x42a9a7
mov ecx, dword [ebp - 0x2ac]
push ecx
call fcn.0042c060
add esp, 4
mov dword [ebp - 0x9a4], eax
lea edx, [ebp - 0x9a4]
push edx
lea ecx, [ebp - 0x28]
call fcn.0042db30
jmp 0x42a878
lea eax, [ebp - 0x9ac]
push eax
lea ecx, [ebp - 0x28]
call fcn.0042dad0
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [ebp - 0x4bc], ecx
mov dword [ebp - 0x4b8], edx
jmp 0x42a9d4
lea ecx, [ebp - 0x4bc]
call fcn.0042dc00
lea eax, [ebp - 0x9b4]
push eax
lea ecx, [ebp - 0x28]
call fcn.0042db00
push eax
lea ecx, [ebp - 0x4bc]
call fcn.0042db70
movzx ecx, al
test ecx, ecx
je 0x42bfb8
lea ecx, [ebp - 0x6ec]
call fcn.0042d770
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x4bc]
call fcn.0042dba0
mov edx, dword [eax]
mov dword [ebp - 0x6ec], edx
mov ax, word [0x45dd0c]
mov word [ebp - 0x6c4], ax
push 0x206
push 0
lea ecx, [ebp - 0x6c2]
push ecx
call fcn.00438240
add esp, 0xc
cmp dword [ebp - 0x6ec], 0
jl 0x42aac2
mov ecx, dword [ebp + 8]
call fcn.00416b30
push eax
push 0x104
lea edx, [ebp - 0x6c4]
push edx
push 0x45dd10
push 0x45dd14
mov eax, dword [ebp - 0x6ec]
push eax
lea ecx, [ebp - 0x9b8]
push ecx
call fcn.0042a6b0
add esp, 8
mov dword [ebp - 0xa98], eax
mov ecx, dword [ebp - 0xa98]
call fcn.00416b30
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ecx, [ebp - 0x9b8]
call fcn.004168d0
push 0x45dd44
lea edx, [ebp - 0x6c4]
push edx
call fcn.00438d0f
add esp, 8
neg eax
sbb eax, eax
neg eax
mov byte [ebp - 0x6e8], al
jmp 0x42aac9
mov byte [ebp - 0x6e8], 0
xor eax, eax
mov word [ebp - 0x6c4], ax
cmp dword [ebp - 0x6ec], 0
jl 0x42ab38
mov ecx, dword [ebp + 8]
call fcn.00416b30
push eax
push 0x104
lea ecx, [ebp - 0x6c4]
push ecx
push 0x45dd50
push 0x45dd54
mov edx, dword [ebp - 0x6ec]
push edx
lea eax, [ebp - 0x9bc]
push eax
call fcn.0042a6b0
add esp, 8
mov dword [ebp - 0xa9c], eax
mov ecx, dword [ebp - 0xa9c]
call fcn.00416b30
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ecx, [ebp - 0x9bc]
call fcn.004168d0
jmp 0x42abfa
push 0x45dd88
lea ecx, [ebp - 0x9c0]
call fcn.00416830
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x9c0]
push ecx
lea edx, [ebp - 0x9c4]
push edx
mov ecx, dword [ebp + 8]
call fcn.00416930
mov dword [ebp - 0xaa0], eax
mov eax, dword [ebp - 0xaa0]
mov dword [ebp - 0xaa4], eax
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0xaa4]
call fcn.00416b30
push eax
push 0x104
lea ecx, [ebp - 0x6c4]
push ecx
push 0x45dd9c
push 0x45dda0
mov edx, dword [ebp - 0x6ec]
push edx
call fcn.0042c060
add esp, 4
push eax
lea eax, [ebp - 0x9c8]
push eax
call fcn.0042a6b0
add esp, 8
mov dword [ebp - 0xaa8], eax
mov ecx, dword [ebp - 0xaa8]
call fcn.00416b30
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ecx, [ebp - 0x9c8]
call fcn.004168d0
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x9c4]
call fcn.004168d0
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x9c0]
call fcn.004168d0
mov dword [ebp - 0x6fc], 0x104
push 0x100000
lea ecx, [ebp - 0x6fc]
push ecx
push 0
lea edx, [ebp - 0x6c4]
push edx
call dword [sym.imp.SHLWAPI.dll_UrlUnescapeW]
call fcn.0042a630
movzx eax, al
test eax, eax
je 0x42ac3a
lea ecx, [ebp - 0x6c4]
push ecx
call fcn.0042bff0
add esp, 4
lea edx, [ebp - 0x6c4]
push edx
lea eax, [ebp - 0x9cc]
push eax
call fcn.0041d6a0
add esp, 8
mov dword [ebp - 0xaac], eax
mov ecx, dword [ebp - 0xaac]
mov dword [ebp - 0xab0], ecx
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0xab0]
call fcn.00402270
push eax
lea ecx, [ebp - 0x6e4]
call fcn.00417310
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x9cc]
call fcn.004021c0
lea ecx, [ebp - 0x6c8]
call fcn.004172f0
mov byte [ebp - 4], 7
mov dword [ebp - 0x90c], 0xffffffff
lea ecx, [ebp - 0x908]
call fcn.004172f0
mov byte [ebp - 4], 8
push 0x104
lea edx, [ebp - 0x904]
push edx
call dword [0x46f8cc]
test eax, eax
je 0x42ae17
push 0x45ddd8
lea ecx, [ebp - 0x9e0]
call fcn.00416830
mov byte [ebp - 4], 9
lea eax, [ebp - 0x904]
push eax
lea ecx, [ebp - 0x9d8]
call fcn.00416830
mov byte [ebp - 4], 0xa
push 0x45ddd4
lea ecx, [ebp - 0x9d0]
call fcn.00416830
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x9e0]
push ecx
lea edx, [ebp - 0x9e4]
push edx
lea eax, [ebp - 0x9d8]
push eax
lea ecx, [ebp - 0x9dc]
push ecx
lea edx, [ebp - 0x9d0]
push edx
lea eax, [ebp - 0x9d4]
push eax
lea ecx, [ebp - 0x6e4]
call fcn.00416930
mov dword [ebp - 0xab4], eax
mov ecx, dword [ebp - 0xab4]
mov dword [ebp - 0xab8], ecx
mov byte [ebp - 4], 0xc
mov ecx, dword [ebp - 0xab8]
call fcn.00416930
mov dword [ebp - 0xabc], eax
mov edx, dword [ebp - 0xabc]
mov dword [ebp - 0xac0], edx
mov byte [ebp - 4], 0xd
mov ecx, dword [ebp - 0xac0]
call fcn.00416930
mov dword [ebp - 0xac4], eax
mov eax, dword [ebp - 0xac4]
push eax
lea ecx, [ebp - 0x908]
call fcn.004168f0
lea ecx, [ebp - 0x9e4]
call fcn.004168d0
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x9dc]
call fcn.004168d0
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x9d4]
call fcn.004168d0
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x9d0]
call fcn.004168d0
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x9d8]
call fcn.004168d0
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x9e0]
call fcn.004168d0
push 0
push 0
push 3
push 0
push 1
push SysReAllocString
lea ecx, [ebp - 0x908]
call fcn.00416b30
push eax
call fcn.00404890
mov dword [ebp - 0x90c], eax
cmp dword [ebp - 0x90c], 0xffffffff
jne 0x42af87
push 0x104
lea ecx, [ebp - 0x904]
push ecx
call dword [0x46f8d0]
test eax, eax
je 0x42af87
push 0x45ddf4
lea ecx, [ebp - 0x9f8]
call fcn.00416830
mov byte [ebp - 4], 0xe
lea edx, [ebp - 0x904]
push edx
lea ecx, [ebp - 0x9f0]
call fcn.00416830
mov byte [ebp - 4], 0xf
push 0x45ddf0
lea ecx, [ebp - 0x9e8]
call fcn.00416830
mov byte [ebp - 4], 0x10
lea eax, [ebp - 0x9f8]
push eax
lea ecx, [ebp - 0x9fc]
push ecx
lea edx, [ebp - 0x9f0]
push edx
lea eax, [ebp - 0x9f4]
push eax
lea ecx, [ebp - 0x9e8]
push ecx
lea edx, [ebp - 0x9ec]
push edx
lea ecx, [ebp - 0x6e4]
call fcn.00416930
mov dword [ebp - 0xac8], eax
mov eax, dword [ebp - 0xac8]
mov dword [ebp - 0xacc], eax
mov byte [ebp - 4], 0x11
mov ecx, dword [ebp - 0xacc]
call fcn.00416930
mov dword [ebp - 0xad0], eax
mov ecx, dword [ebp - 0xad0]
mov dword [ebp - 0xad4], ecx
mov byte [ebp - 4], 0x12
mov ecx, dword [ebp - 0xad4]
call fcn.00416930
mov dword [ebp - 0xad8], eax
mov edx, dword [ebp - 0xad8]
push edx
lea ecx, [ebp - 0x908]
call fcn.004168f0
lea ecx, [ebp - 0x9fc]
call fcn.004168d0
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x9f4]
call fcn.004168d0
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x9ec]
call fcn.004168d0
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x9e8]
call fcn.004168d0
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x9f0]
call fcn.004168d0
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x9f8]
call fcn.004168d0
push 0
push 0
push 3
push 0
push 1
push SysReAllocString
lea ecx, [ebp - 0x908]
call fcn.00416b30
push eax
call fcn.00404890
mov dword [ebp - 0x90c], eax
cmp dword [ebp - 0x90c], 0xffffffff
jne 0x42b019
push str.en_usGadget.xml
lea ecx, [ebp - 0xa00]
call fcn.00416830
mov byte [ebp - 4], 0x13
lea eax, [ebp - 0xa00]
push eax
lea ecx, [ebp - 0xa04]
push ecx
lea ecx, [ebp - 0x6e4]
call fcn.00416930
mov dword [ebp - 0xadc], eax
mov edx, dword [ebp - 0xadc]
push edx
lea ecx, [ebp - 0x908]
call fcn.004168f0
lea ecx, [ebp - 0xa04]
call fcn.004168d0
mov byte [ebp - 4], 8
lea ecx, [ebp - 0xa00]
call fcn.004168d0
push 0
push 0
push 3
push 0
push 1
push SysReAllocString
lea ecx, [ebp - 0x908]
call fcn.00416b30
push eax
call fcn.00404890
mov dword [ebp - 0x90c], eax
cmp dword [ebp - 0x90c], 0xffffffff
jne 0x42b0ab
push str.Gadget.xml
lea ecx, [ebp - 0xa08]
call fcn.00416830
mov byte [ebp - 4], 0x14
lea eax, [ebp - 0xa08]
push eax
lea ecx, [ebp - 0xa0c]
push ecx
lea ecx, [ebp - 0x6e4]
call fcn.00416930
mov dword [ebp - 0xae0], eax
mov edx, dword [ebp - 0xae0]
push edx
lea ecx, [ebp - 0x908]
call fcn.004168f0
lea ecx, [ebp - 0xa0c]
call fcn.004168d0
mov byte [ebp - 4], 8
lea ecx, [ebp - 0xa08]
call fcn.004168d0
push 0
push 0
push 3
push 0
push 1
push SysReAllocString
lea ecx, [ebp - 0x908]
call fcn.00416b30
push eax
call fcn.00404890
mov dword [ebp - 0x90c], eax
cmp dword [ebp - 0x90c], 0xffffffff
je 0x42b326
push 0
mov eax, dword [ebp - 0x90c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0x914], eax
mov ecx, dword [ebp - 0x914]
push ecx
call fcn.00437300
add esp, 4
mov dword [ebp - 0xa10], eax
mov edx, dword [ebp - 0xa10]
mov dword [ebp - 0x910], edx
mov eax, dword [ebp - 0x914]
add eax, 1
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00437300
add esp, 4
mov dword [ebp - 0xa14], eax
mov eax, dword [ebp - 0xa14]
mov dword [ebp - 0x918], eax
mov dword [ebp - 0x91c], 0
push 0
lea ecx, [ebp - 0x91c]
push ecx
mov edx, dword [ebp - 0x914]
push edx
mov eax, dword [ebp - 0x910]
push eax
mov ecx, dword [ebp - 0x90c]
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp dword [ebp - 0x91c], 3
jb 0x42b1dd
mov edx, dword [ebp - 0x910]
movzx eax, byte [edx]
cmp eax, 0xef
jne 0x42b1dd
mov ecx, dword [ebp - 0x910]
movzx edx, byte [ecx + 1]
cmp edx, 0xbb
jne 0x42b1dd
mov eax, dword [ebp - 0x910]
movzx ecx, byte [eax + 2]
cmp ecx, 0xbf
jne 0x42b1dd
mov edx, dword [ebp - 0x914]
push edx
mov eax, dword [ebp - 0x918]
push eax
mov ecx, dword [ebp - 0x914]
sub ecx, 3
push ecx
mov edx, dword [ebp - 0x910]
add edx, 3
push edx
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [ebp - 0x914], eax
xor eax, eax
mov ecx, dword [ebp - 0x914]
mov edx, dword [ebp - 0x918]
mov word [edx + ecx*2], ax
jmp 0x42b2bd
cmp dword [ebp - 0x91c], 2
jb 0x42b27f
mov eax, dword [ebp - 0x910]
movzx ecx, byte [eax]
cmp ecx, 0xff
jne 0x42b27f
mov edx, dword [ebp - 0x910]
movzx eax, byte [edx + 1]
cmp eax, 0xfe
jne 0x42b27f
mov ecx, dword [ebp - 0x914]
shr ecx, 1
mov dword [ebp - 0x914], ecx
mov dword [ebp - 0x920], 1
jmp 0x42b239
mov edx, dword [ebp - 0x920]
add edx, 1
mov dword [ebp - 0x920], edx
mov eax, dword [ebp - 0x920]
cmp eax, dword [ebp - 0x914]
jae 0x42b26a
mov ecx, dword [ebp - 0x920]
mov edx, dword [ebp - 0x918]
mov eax, dword [ebp - 0x920]
mov esi, dword [ebp - 0x910]
mov ax, word [esi + eax*2]
mov word [edx + ecx*2 - 2], ax
jmp 0x42b22a
xor ecx, ecx
mov edx, dword [ebp - 0x914]
mov eax, dword [ebp - 0x918]
mov word [eax + edx*2 - 2], cx
jmp 0x42b2bd
mov ecx, dword [ebp - 0x914]
push ecx
mov edx, dword [ebp - 0x918]
push edx
mov eax, dword [ebp - 0x914]
push eax
mov ecx, dword [ebp - 0x910]
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [ebp - 0x914], eax
xor edx, edx
mov eax, dword [ebp - 0x914]
mov ecx, dword [ebp - 0x918]
mov word [ecx + eax*2], dx
mov edx, dword [ebp - 0x918]
push edx
lea ecx, [ebp - 0x6c8]
call fcn.00417310
mov eax, dword [ebp - 0x918]
mov dword [ebp - 0xa18], eax
mov ecx, dword [ebp - 0xa18]
push ecx
call fcn.00439b5b
add esp, 4
mov edx, dword [ebp - 0x910]
mov dword [ebp - 0xa1c], edx
mov eax, dword [ebp - 0xa1c]
push eax
call fcn.00439b5b
add esp, 4
mov ecx, dword [ebp - 0x90c]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea edx, [ebp - 0x908]
push edx
lea ecx, [ebp - 0x6e0]
call fcn.004168f0
jmp 0x42b348
push 0x45de48
lea ecx, [ebp - 0x6c8]
call fcn.00417310
lea eax, [ebp - 0x6e4]
push eax
lea ecx, [ebp - 0x6e0]
call fcn.004168f0
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x908]
call fcn.004168d0
push 4
push 0x45de4c
lea ecx, [ebp - 0x6c8]
call fcn.00416b30
push eax
call fcn.00438fb4
add esp, 0xc
test eax, eax
jne 0x42b414
push 0x45de58
lea ecx, [ebp - 0x6c8]
call fcn.00416b30
push eax
call fcn.004387ff
add esp, 8
mov dword [ebp - 0x924], eax
cmp dword [ebp - 0x924], 0
jne 0x42b3a4
jmp 0x42b414
mov ecx, dword [ebp - 0x924]
add ecx, 6
mov dword [ebp - 0x924], ecx
mov edx, dword [ebp - 0x924]
movzx eax, word [edx]
push eax
call fcn.004392fc
add esp, 4
test eax, eax
je 0x42b3da
mov ecx, dword [ebp - 0x924]
add ecx, 2
mov dword [ebp - 0x924], ecx
jmp 0x42b3b3
mov edx, dword [ebp - 0x924]
push edx
lea ecx, [ebp - 0xa20]
call fcn.00416830
mov dword [ebp - 0xae4], eax
mov eax, dword [ebp - 0xae4]
push eax
lea ecx, [ebp - 0x6c8]
call fcn.004168f0
lea ecx, [ebp - 0xa20]
call fcn.004168d0
jmp 0x42b357
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
mov dword [ebp - 0x6f4], 0
cmp dword [0x46f6b8], 0
je 0x42b449
push 1
call dword [0x46f6b8]
push 0x200
mov ecx, dword [0x46f464]
push ecx
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
lea edx, [ebp - 0x6f4]
push edx
push 0x45ebd8
push 1
push 0
push 0x46066c
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov dword [ebp - 0x6f8], eax
cmp dword [0x46f6b8], 0
je 0x42b48c
push 0
call dword [0x46f6b8]
push 0x100
mov eax, dword [0x46f464]
push eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
cmp dword [ebp - 0x6f8], 0
je 0x42b49a
jmp 0x42bf69
xor ecx, ecx
mov word [ebp - 0x6f0], cx
cmp dword [0x46f6b8], 0
je 0x42b4c6
push 1
call dword [0x46f6b8]
push 0x200
mov edx, dword [0x46f464]
push edx
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
lea eax, [ebp - 0x6f0]
push eax
lea ecx, [ebp - 0x6c8]
call fcn.00416b30
push eax
mov ecx, dword [ebp - 0x6f4]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x6f4]
push eax
mov ecx, dword [edx + 0x104]
call ecx
mov dword [ebp - 0x6f8], eax
cmp dword [0x46f6b8], 0
je 0x42b519
push 0
call dword [0x46f6b8]
push 0x100
mov edx, dword [0x46f464]
push edx
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
movsx eax, word [ebp - 0x6f0]
test eax, eax
jne 0x42b605
mov dword [ebp - 0x928], 0
lea ecx, [ebp - 0x928]
push ecx
mov edx, dword [ebp - 0x6f4]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x6f4]
push ecx
mov edx, dword [eax + 0xf0]
call edx
cmp dword [ebp - 0x928], 0
je 0x42b605
mov dword [ebp - 0x930], 0
mov dword [ebp - 0x934], 0xffffffff
mov dword [ebp - 0x92c], 0xffffffff
mov dword [ebp - 0x938], 0
lea eax, [ebp - 0x930]
push eax
mov ecx, dword [ebp - 0x928]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x928]
push eax
mov ecx, dword [edx + 0x24]
call ecx
lea edx, [ebp - 0x934]
push edx
mov eax, dword [ebp - 0x928]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x928]
push edx
mov eax, dword [ecx + 0x2c]
call eax
lea ecx, [ebp - 0x92c]
push ecx
mov edx, dword [ebp - 0x928]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x928]
push ecx
mov edx, dword [eax + 0x30]
call edx
lea eax, [ebp - 0x938]
push eax
mov ecx, dword [ebp - 0x928]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x928]
push eax
mov ecx, dword [edx + 0x28]
call ecx
mov edx, dword [ebp - 0x928]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x928]
push ecx
mov edx, dword [eax + 8]
call edx
movsx eax, word [ebp - 0x6f0]
test eax, eax
je 0x42bf69
lea ecx, [ebp - 0x93c]
push ecx
push str.gadget
lea ecx, [ebp - 0xa28]
call fcn.0042e580
mov dword [ebp - 0xae8], eax
mov edx, dword [ebp - 0xae8]
mov dword [ebp - 0xaec], edx
mov byte [ebp - 4], 0x15
mov ecx, dword [ebp - 0xaec]
call fcn.00416b30
push eax
mov eax, dword [ebp - 0x6f4]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x6f4]
push edx
mov eax, dword [ecx + 0x94]
call eax
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0xa21], al
mov byte [ebp - 4], 7
lea ecx, [ebp - 0xa28]
call fcn.004168d0
movzx ecx, byte [ebp - 0xa21]
test ecx, ecx
je 0x42bf69
lea edx, [ebp - 0x940]
push edx
push 0x45de68
lea ecx, [ebp - 0xa30]
call fcn.0042e580
mov dword [ebp - 0xaf0], eax
mov eax, dword [ebp - 0xaf0]
mov dword [ebp - 0xaf4], eax
mov byte [ebp - 4], 0x16
mov ecx, dword [ebp - 0xaf4]
call fcn.00416b30
push eax
mov ecx, dword [ebp - 0x93c]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x93c]
push eax
mov ecx, dword [edx + 0x94]
call ecx
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0xa29], al
mov byte [ebp - 4], 7
lea ecx, [ebp - 0xa30]
call fcn.004168d0
movzx edx, byte [ebp - 0xa29]
test edx, edx
je 0x42b73a
lea ecx, [ebp - 0x6dc]
call fcn.0042e990
push eax
mov eax, dword [ebp - 0x940]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x940]
push edx
mov eax, dword [ecx + 0x68]
call eax
mov ecx, dword [ebp - 0x940]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x940]
push eax
mov ecx, dword [edx + 8]
call ecx
lea edx, [ebp - 0x940]
push edx
push str.description
lea ecx, [ebp - 0xa38]
call fcn.0042e580
mov dword [ebp - 0xaf8], eax
mov eax, dword [ebp - 0xaf8]
mov dword [ebp - 0xafc], eax
mov byte [ebp - 4], 0x17
mov ecx, dword [ebp - 0xafc]
call fcn.00416b30
push eax
mov ecx, dword [ebp - 0x93c]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x93c]
push eax
mov ecx, dword [edx + 0x94]
call ecx
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0xa31], al
mov byte [ebp - 4], 7
lea ecx, [ebp - 0xa38]
call fcn.004168d0
movzx edx, byte [ebp - 0xa31]
test edx, edx
je 0x42b81e
lea ecx, [ebp - 0x954]
call fcn.0042ec90
mov byte [ebp - 4], 0x18
lea eax, [ebp - 0x954]
push eax
mov ecx, dword [ebp - 0x940]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x940]
push eax
mov ecx, dword [edx + 0x20]
call ecx
lea ecx, [ebp - 0x6d4]
call fcn.0042e990
push eax
mov edx, dword [ebp - 0x940]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x940]
push ecx
mov edx, dword [eax + 0x68]
call edx
mov eax, dword [ebp - 0x940]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x940]
push edx
mov eax, dword [ecx + 8]
call eax
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x954]
call fcn.0042ecb0
lea ecx, [ebp - 0x940]
push ecx
push str.author
lea ecx, [ebp - 0xa40]
call fcn.0042e580
mov dword [ebp - 0xb00], eax
mov edx, dword [ebp - 0xb00]
mov dword [ebp - 0xb04], edx
mov byte [ebp - 4], 0x19
mov ecx, dword [ebp - 0xb04]
call fcn.00416b30
push eax
mov eax, dword [ebp - 0x93c]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x93c]
push edx
mov eax, dword [ecx + 0x94]
call eax
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0xa39], al
mov byte [ebp - 4], 7
lea ecx, [ebp - 0xa40]
call fcn.004168d0
movzx ecx, byte [ebp - 0xa39]
test ecx, ecx
je 0x42b98c
lea edx, [ebp - 0x958]
push edx
mov eax, dword [ebp - 0x940]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x940]
push edx
mov eax, dword [ecx + 0x44]
call eax
test eax, eax
jne 0x42b978
lea ecx, [ebp - 0x95c]
push ecx
push str.name
lea ecx, [ebp - 0xa48]
call fcn.0042e580
mov dword [ebp - 0xb08], eax
mov edx, dword [ebp - 0xb08]
mov dword [ebp - 0xb0c], edx
mov byte [ebp - 4], 0x1a
mov ecx, dword [ebp - 0xb0c]
call fcn.00416b30
push eax
mov eax, dword [ebp - 0x958]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x958]
push edx
mov eax, dword [ecx + 0x1c]
call eax
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0xa41], al
mov byte [ebp - 4], 7
lea ecx, [ebp - 0xa48]
call fcn.004168d0
movzx ecx, byte [ebp - 0xa41]
test ecx, ecx
je 0x42b964
lea ecx, [ebp - 0x6d8]
call fcn.0042e990
push eax
mov edx, dword [ebp - 0x95c]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x95c]
push ecx
mov edx, dword [eax + 0x68]
call edx
mov eax, dword [ebp - 0x95c]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x95c]
push edx
mov eax, dword [ecx + 8]
call eax
mov ecx, dword [ebp - 0x958]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x958]
push eax
mov ecx, dword [edx + 8]
call ecx
mov edx, dword [ebp - 0x940]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x940]
push ecx
mov edx, dword [eax + 8]
call edx
lea eax, [ebp - 0x940]
push eax
push str.version
lea ecx, [ebp - 0xa50]
call fcn.0042e580
mov dword [ebp - 0xb10], eax
mov ecx, dword [ebp - 0xb10]
mov dword [ebp - 0xb14], ecx
mov byte [ebp - 4], 0x1b
mov ecx, dword [ebp - 0xb14]
call fcn.00416b30
push eax
mov edx, dword [ebp - 0x93c]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x93c]
push ecx
mov edx, dword [eax + 0x94]
call edx
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0xa49], al
mov byte [ebp - 4], 7
lea ecx, [ebp - 0xa50]
call fcn.004168d0
movzx eax, byte [ebp - 0xa49]
test eax, eax
je 0x42ba37
lea ecx, [ebp - 0x6d0]
call fcn.0042e990
push eax
mov ecx, dword [ebp - 0x940]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x940]
push eax
mov ecx, dword [edx + 0x68]
call ecx
mov edx, dword [ebp - 0x940]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x940]
push ecx
mov edx, dword [eax + 8]
call edx
lea eax, [ebp - 0x940]
push eax
push str.icons
lea ecx, [ebp - 0xa58]
call fcn.0042e580
mov dword [ebp - 0xb18], eax
mov ecx, dword [ebp - 0xb18]
mov dword [ebp - 0xb1c], ecx
mov byte [ebp - 4], 0x1c
mov ecx, dword [ebp - 0xb1c]
call fcn.00416b30
push eax
mov edx, dword [ebp - 0x93c]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x93c]
push ecx
mov edx, dword [eax + 0x94]
call edx
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0xa51], al
mov byte [ebp - 4], 7
lea ecx, [ebp - 0xa58]
call fcn.004168d0
movzx eax, byte [ebp - 0xa51]
test eax, eax
je 0x42bf55
lea ecx, [ebp - 0x960]
push ecx
mov edx, dword [ebp - 0x940]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x940]
push ecx
mov edx, dword [eax + 0x30]
call edx
test eax, eax
jne 0x42bf41
mov dword [ebp - 0x968], 0x1000
lea eax, [ebp - 0x964]
push eax
mov ecx, dword [ebp - 0x960]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x960]
push eax
mov ecx, dword [edx + 0x24]
call ecx
test eax, eax
jne 0x42bf2d
lea edx, [ebp - 0x96c]
push edx
mov eax, dword [ebp - 0x964]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x964]
push edx
mov eax, dword [ecx + 0x44]
call eax
test eax, eax
jne 0x42bf14
lea ecx, [ebp - 0x984]
call fcn.0042ec90
mov byte [ebp - 4], 0x1d
lea ecx, [ebp - 0x988]
push ecx
push str.height
lea ecx, [ebp - 0xa60]
call fcn.0042e580
mov dword [ebp - 0xb20], eax
mov edx, dword [ebp - 0xb20]
mov dword [ebp - 0xb24], edx
mov byte [ebp - 4], 0x1e
mov ecx, dword [ebp - 0xb24]
call fcn.00416b30
push eax
mov eax, dword [ebp - 0x96c]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x96c]
push edx
mov eax, dword [ecx + 0x1c]
call eax
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0xa59], al
mov byte [ebp - 4], 0x1d
lea ecx, [ebp - 0xa60]
call fcn.004168d0
movzx ecx, byte [ebp - 0xa59]
test ecx, ecx
je 0x42bc14
lea edx, [ebp - 0x984]
push edx
mov eax, dword [ebp - 0x988]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x988]
push edx
mov eax, dword [ecx + 0x20]
call eax
lea ecx, [ebp - 0x984]
push ecx
lea ecx, [ebp - 0xa64]
call fcn.0042ecd0
mov dword [ebp - 0xb28], eax
mov ecx, dword [ebp - 0xb28]
call fcn.00416b30
push eax
call fcn.0043a89e
add esp, 4
mov dword [ebp - 0x974], eax
lea ecx, [ebp - 0xa64]
call fcn.004168d0
mov edx, dword [ebp - 0x988]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x988]
push ecx
mov edx, dword [eax + 8]
call edx
lea eax, [ebp - 0x988]
push eax
push str.width
lea ecx, [ebp - 0xa6c]
call fcn.0042e580
mov dword [ebp - 0xb2c], eax
mov ecx, dword [ebp - 0xb2c]
mov dword [ebp - 0xb30], ecx
mov byte [ebp - 4], 0x1f
mov ecx, dword [ebp - 0xb30]
call fcn.00416b30
push eax
mov edx, dword [ebp - 0x96c]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x96c]
push ecx
mov edx, dword [eax + 0x1c]
call edx
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0xa65], al
mov byte [ebp - 4], 0x1d
lea ecx, [ebp - 0xa6c]
call fcn.004168d0
movzx eax, byte [ebp - 0xa65]
test eax, eax
je 0x42bcf4
lea ecx, [ebp - 0x984]
push ecx
mov edx, dword [ebp - 0x988]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x988]
push ecx
mov edx, dword [eax + 0x20]
call edx
lea eax, [ebp - 0x984]
push eax
lea ecx, [ebp - 0xa70]
call fcn.0042ecd0
mov dword [ebp - 0xb34], eax
mov ecx, dword [ebp - 0xb34]
call fcn.00416b30
push eax
call fcn.0043a89e
add esp, 4
mov dword [ebp - 0x970], eax
lea ecx, [ebp - 0xa70]
call fcn.004168d0
mov ecx, dword [ebp - 0x988]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x988]
push eax
mov ecx, dword [edx + 8]
call ecx
cmp dword [ebp - 0x974], 0x10
jl 0x42bef1
cmp dword [ebp - 0x970], 0x10
jl 0x42bef1
mov edx, dword [ebp - 0x974]
add edx, dword [ebp - 0x970]
cmp edx, dword [ebp - 0x968]
jge 0x42bef1
lea eax, [ebp - 0x988]
push eax
push 0x45deac
lea ecx, [ebp - 0xa78]
call fcn.0042e580
mov dword [ebp - 0xb38], eax
mov ecx, dword [ebp - 0xb38]
mov dword [ebp - 0xb3c], ecx
mov byte [ebp - 4], 0x20
mov ecx, dword [ebp - 0xb3c]
call fcn.00416b30
push eax
mov edx, dword [ebp - 0x96c]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x96c]
push ecx
mov edx, dword [eax + 0x1c]
call edx
neg eax
sbb eax, eax
add eax, 1
mov byte [ebp - 0xa71], al
mov byte [ebp - 4], 0x1d
lea ecx, [ebp - 0xa78]
call fcn.004168d0
movzx eax, byte [ebp - 0xa71]
test eax, eax
je 0x42bef1
lea ecx, [ebp - 0x984]
push ecx
mov edx, dword [ebp - 0x988]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x988]
push ecx
mov edx, dword [eax + 0x20]
call edx
lea eax, [ebp - 0x984]
push eax
lea ecx, [ebp - 0x98c]
call fcn.0042ecd0
mov byte [ebp - 4], 0x21
lea ecx, [ebp - 0x98c]
call fcn.00416b30
mov dword [ebp - 0x990], eax
push 0x2f
mov ecx, dword [ebp - 0x990]
push ecx
call fcn.00416790
add esp, 8
mov dword [ebp - 0x990], eax
cmp dword [ebp - 0x990], 0
je 0x42be1f
mov edx, 0x5c
mov eax, dword [ebp - 0x990]
mov word [eax], dx
mov ecx, dword [ebp - 0x990]
add ecx, 2
mov dword [ebp - 0x990], ecx
jmp 0x42bde0
push 0x45deb0
lea ecx, [ebp - 0xa7c]
call fcn.00416830
mov byte [ebp - 4], 0x22
lea edx, [ebp - 0x98c]
push edx
lea eax, [ebp - 0xa84]
push eax
lea ecx, [ebp - 0xa7c]
push ecx
lea edx, [ebp - 0xa80]
push edx
lea ecx, [ebp - 0x6e4]
call fcn.00416930
mov dword [ebp - 0xb40], eax
mov eax, dword [ebp - 0xb40]
mov dword [ebp - 0xb44], eax
mov byte [ebp - 4], 0x23
mov ecx, dword [ebp - 0xb44]
call fcn.00416930
mov dword [ebp - 0xb48], eax
mov ecx, dword [ebp - 0xb48]
push ecx
lea ecx, [ebp - 0x6cc]
call fcn.004168f0
lea ecx, [ebp - 0xa84]
call fcn.004168d0
mov byte [ebp - 4], 0x22
lea ecx, [ebp - 0xa80]
call fcn.004168d0
mov byte [ebp - 4], 0x21
lea ecx, [ebp - 0xa7c]
call fcn.004168d0
mov edx, dword [ebp - 0x974]
add edx, dword [ebp - 0x970]
mov dword [ebp - 0x968], edx
mov eax, dword [ebp - 0x988]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x988]
push edx
mov eax, dword [ecx + 8]
call eax
mov byte [ebp - 4], 0x1d
lea ecx, [ebp - 0x98c]
call fcn.004168d0
mov ecx, dword [ebp - 0x96c]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x96c]
push eax
mov ecx, dword [edx + 8]
call ecx
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x984]
call fcn.0042ecb0
mov edx, dword [ebp - 0x964]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x964]
push ecx
mov edx, dword [eax + 8]
call edx
jmp 0x42badf
mov eax, dword [ebp - 0x960]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x960]
push edx
mov eax, dword [ecx + 8]
call eax
mov ecx, dword [ebp - 0x940]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x940]
push eax
mov ecx, dword [edx + 8]
call ecx
mov edx, dword [ebp - 0x93c]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x93c]
push ecx
mov edx, dword [eax + 8]
call edx
lea eax, [ebp - 0x6ec]
push eax
mov ecx, dword [ebp + 0xc]
call fcn.0042d910
cmp dword [ebp - 0x6f4], 0
je 0x42bf95
mov ecx, dword [ebp - 0x6f4]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x6f4]
push eax
mov ecx, dword [edx + 8]
call ecx
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x6c8]
call fcn.004168d0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x6ec]
call fcn.0042d7d0
jmp 0x42a9c9
mov byte [ebp - 0xa85], 1
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.0042da70
mov al, byte [ebp - 0xa85]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov ecx, dword [ebp - 0x30]
xor ecx, ebp
call fcn.004376f1
mov esp, ebp
pop ebp
ret