Function at 0x40c7a0
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb54
mov eax, dword [0x4f6fc0]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0xb1c], 0
mov dword [ebp - 0xb4c], 0
mov dword [ebp - 0xb20], 0xffffffff
mov dword [ebp - 0xb3c], 0
mov dword [ebp - 0xb40], 0
mov dword [ebp - 0xb2c], 0
mov dword [ebp - 0xb50], 0
mov dword [ebp - 0xb24], 0
mov dword [ebp - 0xb30], 0
mov dword [ebp - 0xb34], 0
mov al, byte [0x4f93a1]
mov byte [ebp - 0x314], al
push 0xfe
push 0
lea ecx, [ebp - 0x313]
push ecx
call fcn.004b6780
add esp, 0xc
mov dl, byte [0x4f93a2]
mov byte [ebp - 0x114], dl
push 0xfe
push 0
lea eax, [ebp - 0x113]
push eax
call fcn.004b6780
add esp, 0xc
mov cl, byte [0x4f93a3]
mov byte [ebp - 0x214], cl
push 0xfe
push 0
lea edx, [ebp - 0x213]
push edx
call fcn.004b6780
add esp, 0xc
mov al, byte [0x4f93a4]
mov byte [ebp - 0x14], al
xor ecx, ecx
mov dword [ebp - 0x13], ecx
mov dword [ebp - 0xf], ecx
mov dword [ebp - 0xb], ecx
mov word [ebp - 7], cx
mov byte [ebp - 5], cl
mov dword [ebp - 0xb54], 0
mov dword [ebp - 0xb28], 0
mov edx, dword [ebp + 8]
add edx, 0x52
push edx
call fcn.004b5f60
add esp, 4
cmp eax, 8
je 0x40c8e2
push 0x4f93a5
push 0x4f93a6
push 0x4d77cc
push str.Invalid_Class_Path_ID__1_
call fcn.00458fb0
add esp, 0x10
or eax, 0xffffffff
jmp 0x40d066
mov eax, dword [ebp + 8]
movsx ecx, word [eax + 0x2be]
test ecx, ecx
je 0x40c905
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.0040efb0
add esp, 8
jmp 0x40d066
cmp dword [0x54e958], 0
jne 0x40c923
push 1
push 0x4f93d8
call fcn.00418e80
add esp, 8
mov dword [ebp - 0xb40], eax
cmp dword [ebp - 0xb40], 0xffffffff
jne 0x40c94b
push 0x4f93a7
push 0x7b4
push str.Save_classes
call fcn.0042b120
add esp, 0xc
or eax, 0xffffffff
jmp 0x40d066
push 0x4d7808
push 0x5c
push 0x4f93d8
push 0x4d7814
lea ecx, [ebp - 0x114]
push ecx
call fcn.004b6e08
add esp, 0x14
push 1
lea edx, [ebp - 0x114]
push edx
call fcn.0048e0a0
add esp, 8
push 1
push 0x4d781c
lea eax, [ebp - 0x114]
push eax
call fcn.00419d20
add esp, 0xc
mov dword [ebp - 0xb1c], eax
cmp dword [0x54e900], 1
jne 0x40c9a9
or eax, 0xffffffff
jmp 0x40d066
cmp dword [ebp - 0xb1c], 0
jne 0x40ca73
lea ecx, [ebp - 0xb50]
push ecx
push 0
push 2
lea edx, [ebp - 0xb54]
push edx
lea eax, [ebp - 0x314]
push eax
push 0x4f93a8
lea ecx, [ebp - 0x114]
push ecx
push 1
call fcn.00497900
add esp, 0x20
mov dword [ebp - 0xb40], eax
cmp dword [ebp - 0xb40], 0
jne 0x40ca4d
lea edx, [ebp - 0x114]
push edx
lea eax, [ebp - 0x214]
push eax
push 0x4d7820
push 0
call fcn.004766d0
add esp, 0x10
push 0x4d7844
push 0x4f93a9
push 0x4d7868
lea ecx, [ebp - 0x214]
push ecx
call fcn.00458fb0
add esp, 0x10
lea edx, [ebp - 0x114]
push edx
push str.ERROR__Cant_open:__s
push 1
call fcn.004417b0
add esp, 0xc
or eax, 0xffffffff
jmp 0x40d066
push 0
push 0x4d7894
lea eax, [ebp - 0x114]
push eax
call fcn.00419d20
add esp, 0xc
mov dword [ebp - 0xb1c], eax
mov dword [0x4f93d4], 0
cmp dword [0x54e900], 1
je 0x40ca85
cmp dword [ebp - 0xb1c], 0
jne 0x40ca8d
or eax, 0xffffffff
jmp 0x40d066
cmp dword [ebp - 0xb1c], 0
je 0x40d055
mov ecx, dword [ebp - 0xb1c]
push ecx
call fcn.0045c6f0
add esp, 4
mov dword [ebp - 0xb24], eax
cmp dword [ebp - 0xb24], 0x31f
jl 0x40caeb
push str.ERROR:_No_new_classes_can_be_created
push 1
call fcn.004417b0
add esp, 8
mov edx, dword [ebp - 0xb1c]
push edx
call fcn.00419ca0
add esp, 4
mov dword [ebp - 0xb1c], 0
or eax, 0xffffffff
jmp 0x40d066
mov eax, dword [ebp + 8]
push eax
call fcn.0040ad40
add esp, 4
cmp eax, 1
jne 0x40cc55
mov ecx, dword [ebp + 8]
movsx edx, word [ecx + 0xfc]
cmp edx, 0xffffffff
jne 0x40cc55
mov al, byte [0x4f93aa]
mov byte [ebp - 0xb18], al
push 0x801
push 0
lea ecx, [ebp - 0xb17]
push ecx
call fcn.004b6780
add esp, 0xc
mov dword [ebp - 0xb38], 0
push 0x802
push 0
lea edx, [ebp - 0xb18]
push edx
call fcn.004b6780
add esp, 0xc
mov dword [ebp - 0xb20], 0
jmp 0x40cb6f
mov eax, dword [ebp - 0xb20]
add eax, 1
mov dword [ebp - 0xb20], eax
mov ecx, dword [ebp - 0xb20]
cmp ecx, dword [ebp - 0xb24]
jge 0x40cbbb
mov edx, dword [ebp - 0xb20]
imul edx, edx, 0x127c
movsx eax, word [edx + 0x14b64bc]
mov dword [ebp - 0xb38], eax
cmp dword [ebp - 0xb38], 0
jle 0x40cbb9
cmp dword [ebp - 0xb38], 0x802
jge 0x40cbb9
mov ecx, dword [ebp - 0xb38]
mov byte [ebp + ecx - 0xb18], 1
jmp 0x40cb60
mov dword [ebp - 0xb20], 2
jmp 0x40cbd6
mov edx, dword [ebp - 0xb20]
add edx, 1
mov dword [ebp - 0xb20], edx
cmp dword [ebp - 0xb20], 0x802
jge 0x40cc16
mov eax, dword [ebp + 8]
movsx ecx, word [eax + 0xfc]
cmp ecx, 0xffffffff
jne 0x40cc16
mov edx, dword [ebp - 0xb20]
movsx eax, byte [ebp + edx - 0xb18]
test eax, eax
jne 0x40cc14
mov ecx, dword [ebp + 8]
mov dx, word [ebp - 0xb20]
mov word [ecx + 0xfc], dx
jmp 0x40cbc7
mov eax, dword [ebp + 8]
movsx ecx, word [eax + 0xfc]
cmp ecx, 0xffffffff
jne 0x40cc55
push str.ERROR:_No_new_groups_can_be_created
push 1
call fcn.004417b0
add esp, 8
mov edx, dword [ebp - 0xb1c]
push edx
call fcn.00419ca0
add esp, 4
mov dword [ebp - 0xb1c], 0
or eax, 0xffffffff
jmp 0x40d066
push 0x127c
call fcn.004b6c11
add esp, 4
mov dword [ebp - 0xb28], eax
cmp dword [ebp - 0xb28], 0
je 0x40ce19
mov dword [ebp - 0xb44], 0
mov dword [ebp - 0xb20], 1
jmp 0x40cc9a
mov eax, dword [ebp - 0xb20]
add eax, 1
mov dword [ebp - 0xb20], eax
mov ecx, dword [ebp - 0xb20]
cmp ecx, dword [ebp - 0xb24]
jg 0x40cdfe
mov edx, dword [ebp - 0xb1c]
push edx
call fcn.004b935a
add esp, 4
mov dword [ebp - 0xb30], eax
push 0x127c
push 0
mov eax, dword [ebp - 0xb28]
push eax
call fcn.004b6780
add esp, 0xc
mov ecx, dword [ebp - 0xb1c]
push ecx
push 1
push 0x2bc
mov edx, dword [ebp - 0xb28]
push edx
call fcn.004b8e47
add esp, 0x10
mov eax, dword [ebp - 0xb28]
add eax, 0x52
push eax
mov ecx, dword [ebp + 8]
add ecx, 0x52
push ecx
call fcn.004b68e0
add esp, 8
test eax, eax
jne 0x40cdf9
mov dword [ebp - 0xb44], 0
push 0
mov edx, dword [ebp - 0xb30]
push edx
mov eax, dword [ebp - 0xb1c]
push eax
call fcn.004b8f82
add esp, 0xc
push 1
mov ecx, dword [ebp + 8]
push ecx
call fcn.0040f600
add esp, 8
push 0
mov edx, dword [ebp + 8]
push edx
call fcn.00411370
add esp, 8
mov eax, 1
imul eax, eax, 0
mov ecx, dword [ebp + 0xc]
movsx edx, byte [ecx + eax]
test edx, edx
je 0x40cd90
push 8
push 0x4d78e4
mov eax, dword [ebp + 0xc]
push eax
call fcn.004b6970
add esp, 0xc
test eax, eax
je 0x40cd90
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
add edx, 0x52
push edx
call fcn.004b5e60
add esp, 8
mov eax, dword [ebp + 8]
push eax
call fcn.00410830
add esp, 4
mov dword [ebp - 0xb44], eax
cmp dword [ebp - 0xb44], 0
jne 0x40cdd1
mov ecx, dword [ebp - 0xb1c]
push ecx
push 1
push 0x2bc
mov edx, dword [ebp + 8]
push edx
call fcn.004b9519
add esp, 0x10
mov eax, dword [ebp + 8]
push eax
call fcn.00410640
add esp, 4
push 0
mov ecx, dword [ebp + 8]
push ecx
call fcn.00411370
add esp, 8
push 0
mov edx, dword [ebp + 8]
push edx
call fcn.0040f600
add esp, 8
mov dword [ebp - 0xb4c], 1
jmp 0x40cdfe
jmp 0x40cc8b
mov eax, dword [ebp - 0xb28]
push eax
call fcn.004b6bd9
add esp, 4
mov dword [ebp - 0xb28], 0
jmp 0x40ce30
push str.ERROR:_Out_of_Memory_in_Save_classes
push 1
call fcn.004417b0
add esp, 8
or eax, 0xffffffff
jmp 0x40d066
cmp dword [ebp - 0xb4c], 0
jne 0x40d00e
mov dword [ebp - 0xb48], 0
mov ecx, dword [ebp - 0xb1c]
push ecx
call fcn.004b935a
add esp, 4
mov dword [ebp - 0xb30], eax
mov edx, dword [ebp - 0xb24]
add edx, 1
mov dword [ebp - 0xb24], edx
mov eax, dword [ebp - 0xb24]
push eax
mov ecx, dword [ebp - 0xb1c]
push ecx
call fcn.00462090
add esp, 8
mov edx, dword [ebp - 0xb24]
sub edx, 1
imul edx, edx, 0x2bc
add edx, 6
mov dword [ebp - 0xb34], edx
mov eax, dword [ebp - 0xb30]
cmp eax, dword [ebp - 0xb34]
jge 0x40cf37
mov ecx, dword [ebp - 0xb34]
sub ecx, dword [ebp - 0xb30]
mov dword [ebp - 0xb2c], ecx
push 0xff
push 0
lea edx, [ebp - 0x114]
push edx
call fcn.004b6780
add esp, 0xc
push 2
push 0
mov eax, dword [ebp - 0xb1c]
push eax
call fcn.004b8f82
add esp, 0xc
mov ecx, dword [ebp - 0xb2c]
mov dword [ebp - 0xb3c], ecx
cmp dword [ebp - 0xb3c], 0xff
jle 0x40cf08
mov dword [ebp - 0xb3c], 0xff
mov edx, dword [ebp - 0xb1c]
push edx
mov eax, dword [ebp - 0xb3c]
push eax
push 1
lea ecx, [ebp - 0x114]
push ecx
call fcn.004b9519
add esp, 0x10
mov edx, dword [ebp - 0xb2c]
sub edx, eax
mov dword [ebp - 0xb2c], edx
jne 0x40cee6
push 0
mov eax, dword [ebp - 0xb34]
push eax
mov ecx, dword [ebp - 0xb1c]
push ecx
call fcn.004b8f82
add esp, 0xc
push 1
mov edx, dword [ebp + 8]
push edx
call fcn.0040f600
add esp, 8
push 0
mov eax, dword [ebp + 8]
push eax
call fcn.00411370
add esp, 8
mov ecx, dword [ebp + 8]
push ecx
call fcn.00410830
add esp, 4
mov dword [ebp - 0xb48], eax
cmp dword [ebp - 0xb48], 0
jne 0x40cfac
mov edx, dword [ebp - 0xb1c]
push edx
push 1
push 0x2bc
mov eax, dword [ebp + 8]
push eax
call fcn.004b9519
add esp, 0x10
mov ecx, dword [ebp + 8]
push ecx
call fcn.00410640
add esp, 4
push 0
mov edx, dword [ebp + 8]
push edx
call fcn.00411370
add esp, 8
push 0
mov eax, dword [ebp + 8]
push eax
call fcn.0040f600
add esp, 8
mov ecx, dword [ebp + 8]
push ecx
call fcn.0040ad40
add esp, 4
test eax, eax
jne 0x40d00e
lea edx, [ebp - 0x14]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00431540
add esp, 8
mov ecx, dword [ebp + 8]
add ecx, 0x52
push ecx
push 0x5c
lea edx, [ebp - 0x14]
push edx
push 0x4f93d8
push 0x4d7918
lea eax, [ebp - 0x114]
push eax
call fcn.004b6e08
add esp, 0x18
mov ecx, dword [ebp - 0xb1c]
push ecx
call fcn.00419ca0
add esp, 4
mov dword [ebp - 0xb1c], 0
mov edx, dword [ebp + 8]
push edx
call fcn.0040ad40
add esp, 4
cmp eax, 1
je 0x40d049
mov eax, dword [ebp + 8]
push eax
call fcn.0040ad70
add esp, 4
cmp eax, 1
jne 0x40d055
mov ecx, dword [ebp + 8]
push ecx
call fcn.00431a80
add esp, 4
mov edx, dword [ebp - 0xb24]
mov dword [0x4f93d4], edx
mov eax, dword [0x4f93d4]
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004b6253
mov esp, ebp
pop ebp
ret