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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x43a451
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2180
call fcn.00425260
mov eax, dword [0x44a5d0]
xor eax, esp
mov dword [esp + 0x217c], eax
push ebx
push esi
mov eax, dword [0x44a5d0]
xor eax, esp
push eax
lea eax, [esp + 0x2190]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
xor ebx, ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x24], ebx
mov eax, dword [edi + 0xb0]
lea esi, [edi + 0xb0]
push 0x441128
push eax
call fcn.00423a76
add esp, 8
cmp eax, ebx
sete al
test al, al
je 0x404739
mov esi, dword [esp + 0x10]
push 0x441128
mov ecx, esi
call fcn.00405800
jmp 0x404bf4
call fcn.004123f8
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x404753
push 0x80004005
call fcn.004052a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0xc], eax
mov dword [esp + 0x2198], ebx
mov eax, dword [esi]
push 0x2e
push eax
call fcn.004222a9
add esp, 8
cmp eax, ebx
je 0x4047c9
sub eax, dword [esi]
cmp eax, 0xffffffff
je 0x4047c9
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, esi
call fcn.00404e40
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x219c], 1
call fcn.004054f0
mov byte [esp + 0x2198], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4047c9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str..sig
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00405000
add esp, 0xc
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x219c], 2
call fcn.004054f0
mov byte [esp + 0x2198], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40481a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0xfff
lea ecx, [esp + 0x1189]
push ebx
push ecx
mov byte [esp + 0x1190], 0
call fcn.004249b0
push 0xff
lea edx, [esp + 0x95]
push ebx
push edx
mov byte [esp + 0x9c], 0
call fcn.004249b0
push 0xfff
lea eax, [esp + 0x1a1]
push ebx
push eax
mov byte [esp + 0x1a8], 0
call fcn.004249b0
add esp, 0x24
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x88]
push edx
lea eax, [esp + 0x118c]
push eax
lea ecx, [esp + 0x3c]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x38], ebx
call fcn.00401e90
cmp eax, ebx
je 0x4048e0
mov esi, dword [esp + 0x10]
push 0x441128
mov ecx, esi
call fcn.00405800
mov dword [esp + 0x2198], 0xffffffff
mov eax, dword [esp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x404bf4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x404bf4
mov esi, dword [esi]
push 0x440bd4
push esi
call fcn.00422837
mov esi, eax
add esp, 8
cmp esi, ebx
mov dword [esp + 0x1c], esi
je 0x40489c
lea ecx, [esp + 0x34]
push ecx
push esi
call fcn.004299ef
add esp, 4
push eax
call fcn.00423572
mov eax, dword [esp + 0x54]
mov edx, dword [edi + 0x188]
add esp, 8
mov dword [esp + 0x18], eax
add eax, 0xc8
push eax
push ebx
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
push 0x406
push edx
call ebx
mov eax, dword [edi + 0x188]
push 0
push 0
push 0x402
push eax
call ebx
xor eax, eax
push 3
lea ecx, [esp + 0x18]
xor ebx, ebx
push ecx
mov byte [esp + 0x74], 0
mov dword [esp + 0x75], eax
mov dword [esp + 0x79], eax
mov dword [esp + 0x7d], eax
mov dword [esp + 0x81], eax
mov dword [esp + 0x85], eax
mov word [esp + 0x89], ax
mov byte [esp + 0x8b], al
mov dword [esp + 0x30], ebx
mov dword [esp + 0x1c], eax
call dword [sym.imp.GDCA_API.dll_GDCA_CreateHashObj]
push 0xa00000
call fcn.00405cc4
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
add esp, 4
test eax, eax
jbe 0x404a05
mov esi, eax
cmp esi, 0xa00000
jbe 0x4049b5
mov esi, 0xa00000
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
push edx
push esi
push 1
push eax
call fcn.00422b83
add esp, 0x10
cmp esi, eax
jne 0x404a38
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
push esi
push ecx
push edx
call dword [sym.imp.GDCA_API.dll_GDCA_HashUpdate]
test eax, eax
jne 0x404a38
push eax
mov eax, dword [edi + 0x188]
push esi
push 0x403
push eax
add ebx, esi
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [esp + 0x18]
sub esi, ebx
jne 0x4049a8
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x70]
push edx
push eax
call dword [sym.imp.GDCA_API.dll_GDCA_HashFinal]
test eax, eax
push esi
je 0x404a6f
call fcn.00422db0
mov ecx, dword [esp + 0x24]
push ecx
call fcn.00405cc9
mov edx, dword [esp + 0x1c]
add esp, 8
push edx
jmp 0x404a54
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.00422db0
mov edx, dword [esp + 0x24]
push edx
call fcn.00405cc9
mov eax, dword [esp + 0x1c]
add esp, 8
push eax
call dword [sym.imp.GDCA_API.dll_GDCA_DestroyHashObj]
mov esi, dword [esp + 0x10]
push 0x441128
mov ecx, esi
call fcn.00405800
jmp 0x404beb
call fcn.00422db0
mov eax, dword [esp + 0x24]
push eax
call fcn.00405cc9
mov ecx, dword [esp + 0x1c]
add esp, 8
push ecx
call dword [sym.imp.GDCA_API.dll_GDCA_DestroyHashObj]
mov ecx, dword [esp + 0x30]
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x188]
push eax
push ecx
lea edx, [esp + 0x1190]
push edx
call dword [sym.imp.GDCA_API.dll_GDCA_Base64Encode]
mov eax, dword [esp + 0x28]
add eax, 0x1000
push 1
push eax
call fcn.00423352
mov edx, dword [esp + 0x30]
add esp, 8
lea ecx, [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x30]
mov ebx, eax
push ebx
push 0
push 0x8004
push edx
lea eax, [esp + 0x80]
push eax
push ecx
lea edx, [esp + 0x1a0]
push edx
push 4
push 0x10
push str.LAB_USERCERT_SIG
mov dword [esp + 0x50], 0
call dword [sym.imp.GDCA_API.dll_GDCA_OpkiSignData]
test eax, eax
je 0x404b22
push ebx
call fcn.00422cb0
mov esi, dword [esp + 0x14]
add esp, 4
push 0x441128
mov ecx, esi
call fcn.00405800
jmp 0x404beb
mov eax, dword [edi + 0x188]
push 0
push 0x64
push 0x403
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, dword [esp + 0xc]
push 0x440e74
push ecx
call fcn.00422837
mov esi, eax
add esp, 8
test esi, esi
je 0x404b04
mov eax, dword [edi + 0x1bc]
mov edx, dword [eax - 0xc]
push esi
push edx
push 1
push eax
call fcn.004234f0
push esi
push 2
push 1
push 0x440fc0
call fcn.004234f0
mov eax, dword [esp + 0x4c]
push esi
push eax
lea ecx, [esp + 0x1ac]
push 1
push ecx
call fcn.004234f0
push esi
push 2
push 1
push 0x440fc0
call fcn.004234f0
mov edx, dword [esp + 0x64]
add esp, 0x40
push esi
push edx
push 1
push ebx
call fcn.004234f0
push esi
push 2
push 1
push 0x440fc0
call fcn.004234f0
push esi
call fcn.00422db0
push ebx
call fcn.00422cb0
mov eax, dword [edi + 0x188]
add esp, 0x28
push 0
push 0x64
push 0x403
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [esp + 0x10]
lea ecx, [esp + 0xc]
push ecx
mov ecx, esi
call fcn.004052f0
lea ecx, [esp + 0xc]
call fcn.00401350
mov eax, esi
mov ecx, dword [esp + 0x2190]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
mov ecx, dword [esp + 0x217c]
xor ecx, esp
call fcn.00421f10
mov esp, ebp
pop ebp
ret 4