Function at 0x40e780
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x44876b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x12c
push ebx
push ebp
push esi
push edi
mov esi, ecx
push 0x45f758
lea ecx, [esp + 0x18]
call fcn.00403820
mov eax, dword [0x45f74c]
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x144], ebx
lea ecx, [esp + 0x14]
jne 0x40e7d4
push 0xd
push str.chinese.lang
jmp 0x40e7e0
cmp eax, 1
jne 0x40e84f
push 0x12
push str.chinese_big5.lang
call fcn.00408070
push 5
push 0x418
mov ecx, esi
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
push 5
push 0xa
mov ecx, esi
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
push 5
push 0x411
mov ecx, esi
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
push 5
push 0x412
mov ecx, esi
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
push 5
push 0x413
mov ecx, esi
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
push 5
jmp 0x40e8bd
push 0xd
push str.english.lang
call fcn.00408070
push ebx
push 0x418
mov ecx, esi
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
push ebx
push 0xa
mov ecx, esi
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
push ebx
push 0x411
mov ecx, esi
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
push ebx
push 0x412
mov ecx, esi
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
push ebx
push 0x413
mov ecx, esi
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
push ebx
mov ecx, esi
push 0x414
call fcn.0043986d
mov ecx, eax
call fcn.004399ea
xor eax, eax
mov ecx, 0x3f
lea edi, [esp + 0x39]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [esp + 0x14]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push eax
push 0xff
lea ecx, [esp + 0x40]
push ecx
push 0x44b7d1
push str.FILELIST_COL1
push str.dialog_main
mov dword [esp + 0x30], 4
mov byte [esp + 0x50], bl
call edi
cmp byte [esp + 0x38], bl
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
lea edx, [esp + 0x38]
mov dword [esp + 0x24], edx
je 0x40e93a
mov ecx, dword [esi + 0xdc]
lea eax, [esp + 0x18]
push eax
push ebx
push 0x101a
push ecx
call ebp
mov edx, dword [esp + 0x14]
push edx
push 0xff
lea eax, [esp + 0x40]
push eax
push 0x44b7d1
push str.FILELIST_COL2
push str.dialog_main
mov byte [esp + 0x50], bl
call edi
cmp byte [esp + 0x38], bl
lea ecx, [esp + 0x38]
mov dword [esp + 0x24], ecx
je 0x40e981
mov eax, dword [esi + 0xdc]
lea edx, [esp + 0x18]
push edx
push 1
push 0x101a
push eax
call ebp
mov ecx, dword [esp + 0x14]
push ecx
push 0xff
lea edx, [esp + 0x40]
push edx
push 0x44b7d1
push str.FILELIST_COL3
push str.dialog_main
mov byte [esp + 0x50], bl
call edi
lea eax, [esp + 0x38]
mov dword [esp + 0x24], eax
cmp byte [esp + 0x38], bl
je 0x40e9c8
mov edx, dword [esi + 0xdc]
lea ecx, [esp + 0x18]
push ecx
push 2
push 0x101a
push edx
call ebp
mov eax, dword [esp + 0x14]
push eax
push 0xff
lea ecx, [esp + 0x40]
push ecx
push 0x44b7d1
push str.STRLIST_COL1
push str.dialog_main
mov byte [esp + 0x50], bl
call edi
cmp byte [esp + 0x38], bl
lea edx, [esp + 0x38]
mov dword [esp + 0x24], edx
je 0x40ea0e
mov ecx, dword [esi + 0x8c]
lea eax, [esp + 0x18]
push eax
push ebx
push 0x101a
push ecx
call ebp
mov edx, dword [esp + 0x14]
push edx
push 0xff
lea eax, [esp + 0x40]
push eax
push 0x44b7d1
push str.STRLIST_COL2
push str.dialog_main
mov byte [esp + 0x50], bl
call edi
cmp byte [esp + 0x38], bl
lea ecx, [esp + 0x38]
mov dword [esp + 0x24], ecx
je 0x40ea55
mov eax, dword [esi + 0x8c]
lea edx, [esp + 0x18]
push edx
push 1
push 0x101a
push eax
call ebp
mov ecx, dword [esp + 0x14]
push ecx
push 0xff
lea edx, [esp + 0x40]
push edx
push 0x44b7d1
push str.STRLIST_COL3
push str.dialog_main
mov byte [esp + 0x50], bl
call edi
lea eax, [esp + 0x38]
mov dword [esp + 0x24], eax
cmp byte [esp + 0x38], bl
je 0x40ea9c
mov edx, dword [esi + 0x8c]
lea ecx, [esp + 0x18]
push ecx
push 2
push 0x101a
push edx
call ebp
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x144], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40eac5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0x13c]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret