Function at 0x10012289
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
lea ecx, [eax + 0x270]
push esi
push edi
mov edi, eax
mov dword [ebp - 0x28], ecx
cmp eax, ecx
ja case.0x10012282.150
mov esi, dword [ebp - 0xc]
mov ebx, dword [ebp - 0x28]
jmp 0x10011c60
mov dl, byte [ebp - 2]
cmp edi, 0x48e6
ja 0x10011e75
je 0x10011e65
lea eax, [edi - 0x2833]
cmp eax, 0x18
ja case.0x10011e9d.18669
sbb byte [edi], cl
xchg dword [ebx + 0xf000006], ecx
mov dh, 0x80
cld
and al, 1
adc bh, bh
jmp dword [eax*4 + 0x100124e4]
movzx eax, byte [eax + 0x100124fc]
jmp dword [eax*4 + 0x100124e4]
mov ecx, dword [ebp + 0x10]
cmp byte [ecx], 0
jne 0x10011ca0
cmp byte [ebp - 3], 0
je 0x10011cbe
mov edx, dword [ebp + 0x14]
mov eax, dword [edx]
push eax
call fcn.10014190
add esp, 4
test al, al
je 0x10011cbe
mov dword [ebp - 0x1c], 0xffffffff
jmp case.0x10011e9d.18669
mov esi, 0x3b8f
mov eax, esi
sub eax, 0x3b8f
je 0x10011d06
sub eax, 0x5e
jne 0x10011d1e
jbe 0x10011c7d
adc al, 0x9a
cli
push 0x24000000
call sym.IT_Markt.dll_decryptExeFs
add esp, 4
test al, al
jne 0x10011cf4
push str.The_CTRNAND_FIRM_is_corrupted.
call fcn.1002a4d0
add esp, 4
cmp byte [fcn.10010010], 0
je 0x10011d1e
mov dword [ebp - 0x1c], 0xffffffff
jmp 0x10011d1e
popfd
mov bh, 0x14
xchg esp, eax
les eax, [eax + 0x7400fd7d]
or eax, 0x2e2fc68
adc al, ch
mov ch, 0x87
add dword [eax], eax
add esp, 4
add esi, 0x5e
cmp esi, 0x3bed
jbe 0x10011cc3
mov esi, dword [ebp - 0xc]
jmp case.0x10011e9d.18669
mov eax, 0x2819
cmp eax, eax
je 0x100124b9
add eax, 0x52
cmp eax, 0x2819
jbe 0x10011d38
test byte [ebp - 1], 2
jne case.0x10011e9d.18669
mov eax, 0x4ee2
cmp eax, eax
jne 0x10011d77
mov cl, dl
and cl, 3
cmp cl, 1
jne 0x10011d69
or byte [ebp - 1], 0x10
mov cl, dl
and cl, 0xc
cmp cl, 4
jne 0x10011d77
or byte [ebp - 1], 8
add eax, 0x14
cmp eax, 0x4ee2
jbe 0x10011d59
jmp case.0x10011e9d.18669
jmp 0xabab32d6
cmp dword [ebp - 0x1c], 0xffffffff
jne case.0x10011e9d.18669
push str.Failed_to_get_the_CTRNAND_FIRM.
call fcn.1002a4d0
add esp, 4
jmp case.0x10011e9d.18669
inc ecx
sub ah, byte [ecx + 0x558b1987]
adc al, 0x8b
add dl, byte [eax - 0x18]
xchg byte [eax + eax], dh
add esp, 4
mov dword [ebp - 0x1c], eax
jmp case.0x10011e9d.18669
insd dword es:[edi], dx
into
out dx, eax
and edx, esp
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x20], ecx
jmp case.0x10011e9d.18669
cmp edi, 0x7ee6
ja 0x10012482
je 0x10012473
lea eax, [edi - 0x48ec]
cmp eax, 0x66
ja case.0x10011e9d.18669
movzx eax, byte [eax + 0x10012564]
jmp dword [eax*4 + 0x10012518]
push eax
out 0x1a, eax
fiadd dword [ebx + 0xf00f87d]
test byte [esp + eax], bl
add byte [eax - 0x16fc00b3], al
push ebx
add al, 0
add byte [ebx], dh
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], eax
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], eax
mov edi, 0x4345
xor esi, esi
cmp esi, 0x19
ja case.0x10011edb.1
movzx ecx, byte [esi + 0x100125e8]
jmp dword [ecx*4 + 0x100125cc]
cmp dword [ebp - 0xc], 0xff
jb 0x10011f1b
mov ecx, 0x24b1
mov eax, ecx
sub eax, 0x24b1
je 0x10011f04
sub eax, 0xf
je case.0x10012282.150
jmp 0x10011f10
push ecx
retf 0x5f3c
push es
add byte [eax], al
add byte [ebx - 0x67ef03f], al
shl byte [eax + eax], 0
add ecx, 0xf
cmp ecx, 0x24c0
jbe 0x10011ef0
and ebx, 0xff
jmp case.0x10011edb.1
int 0xcd
loope 0x10011f0c
jne 0x10011f92
cmp ebx, 0x20
jb 0x10012400
cmp bx, 0x2f
je 0x10011f45
cmp bx, 0x5c
jne case.0x10011edb.1
mov edx, dword [ebp - 8]
mov ecx, 0x5dca
lea ecx, [ecx]
mov eax, ecx
sub eax, 0x5dca
je 0x10011f64
sub eax, 0x3f
je 0x10012403
jmp 0x10011f7b
mov eax, dword [ebp - 0x20]
movzx eax, word [eax + edx*2]
cmp eax, 0x2f
je 0x10011f75
cmp eax, 0x5c
jne 0x10011f78
inc edx
jmp 0x10011f64
mov dword [ebp - 8], edx
add ecx, 0x3f
cmp ecx, 0x5e09
jbe 0x10011f50
jmp case.0x10011edb.1
jb 0x10011f86
test eax, 0x458b1289
hlt
push ds
or al, 0xce
dec esi
in al, dx
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x20]
movzx ebx, word [edx + eax*2]
inc eax
mov dword [ebp - 8], eax
jmp case.0x10011edb.1
push 1
push ebx
call fcn.1000db80
add esp, 8
movzx ebx, ax
jmp case.0x10011edb.1
test bx, bx
jne 0x10011fe6
mov eax, 0x4f38
cmp eax, eax
je 0x100124c3
add eax, 0x62
cmp eax, 0x4f38
jbe 0x10011fd4
jmp 0x10011ff0
mov eax, 0x80
cmp bx, ax
jae case.0x10011edb.1
movzx ecx, bx
push ecx
mov eax, str._:___
call fcn.1001d6b0
add esp, 4
test eax, eax
je case.0x10011edb.1
mov ecx, 0x162d
mov eax, ecx
sub eax, 0x162d
je 0x1001201e
sub eax, 0x63
je case.0x10012282.150
jmp 0x1001202a
dec eax
mov byte [0xc7926896], al
inc ebp
in al, dx
push es
add byte [eax], al
add byte [ebx - 0x67e9c3f], al
nop
push ss
add byte [eax], al
add ecx, 0x63
cmp ecx, 0x1690
jbe 0x1001200a
add edi, 5
add esi, 5
cmp edi, 0x435e
ja 0x10011ec4
jmp 0x10011ecb
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x10]
movzx ebx, word [ecx + eax*2]
inc eax
mov dword [ebp - 8], eax
test bx, bx
je 0x100121ed
mov eax, dword [ebp - 0x24]
mov edi, dword [ebp - 8]
cmp bx, 0x20
je 0x100121cf
cmp bx, 0x2e
jne 0x10012081
cmp edi, esi
jne 0x100121cf
cmp dword [ebp - 0x18], eax
jae 0x1001217d
cmp edi, esi
je 0x1001217d
mov edx, 0x80
cmp bx, dx
jb 0x100120ee
mov esi, 0xb76
mov eax, esi
sub eax, 0xb76
je 0x100120d0
sub eax, 9
je 0x100120bf
sub eax, 9
jne 0x100120e3
dec eax
sub al, 0x65
mov edx, 0xff4d80ef
add ch, bl
and al, 0x66
test ebx, ebx
test bx, bx
je 0x100120e3
movzx eax, bx
movzx ebx, byte [eax + 0x1002fe80]
jmp 0x100120e3
jl 0x100120e8
pop es
arpl word [ecx], si
push 0
push ebx
call fcn.1000db80
add esp, 8
movzx ebx, ax
add esi, 9
cmp esi, 0xb88
mov byte [ebx], cl
add byte [eax], al
jbe 0x100120a1
test bx, bx
je 0x10012149
movzx edx, bx
push edx
mov eax, str.____
call fcn.1001d6b0
add esp, 4
test eax, eax
jne 0x10012149
lea eax, [ebx - 0x41]
cmp ax, 0x19
ja 0x10012117
or byte [ebp - 2], 2
jmp 0x1001216a
lea ecx, [ebx - 0x61]
cmp cx, 0x19
ja 0x1001216a
mov cl, byte [ebp - 2]
mov eax, 0x604b
cmp eax, eax
jne 0x1001213a
push ecx
pop esi
pop edx
sub ebx, 0xffffff80
leave
add dword [ecx + 0xffe0c3], eax
add byte [ebx + 0x4b3d14c0], al
pushal
add byte [eax], al
add eax, 0x14
cmp eax, 0x604b
jbe 0x1001212a
mov byte [ebp - 2], cl
jmp 0x1001216a
mov eax, 0x4896
cmp eax, eax
jne 0x10012160
out 0xdf, eax
js 0x100120d8
dec ebp
inc dword [ebx]
mov ebx, 0x5f
add eax, 0x1f
cmp eax, 0x4896
jbe 0x10012150
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp + 0x14]
mov byte [eax + edx + 0x20], bl
mov dl, byte [ebp - 2]
inc eax
mov dword [ebp - 0x18], eax
jmp 0x100121d3
cmp eax, 0xb
jne 0x100121a9
mov ecx, 0x67fb
mov eax, ecx
sub eax, 0x67fb
je 0x1001219a
sub eax, 0x52
je 0x100121ed
mov edi, dword [ebp - 8]
jmp 0x1001219e
or byte [ebp - 1], 3
add ecx, 0x52
cmp ecx, 0x684d
jbe 0x10012187
cmp edi, esi
je 0x100121b5
or byte [ebp - 1], 3
cmp edi, esi
ja 0x100121ed
add dl, dl
add dl, dl
mov dword [ebp - 8], esi
mov dword [ebp - 0x18], 8
mov dword [ebp - 0x24], 0xb
mov byte [ebp - 2], dl
jmp 0x100121d3
or byte [ebp - 1], 3
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x10]
movzx ebx, word [ecx + eax*2]
mov esi, dword [ebp - 0xc]
inc eax
mov dword [ebp - 8], eax
test bx, bx
jne 0x10012063
mov edi, 0x4934
jmp case.0x10011e9d.18669
mov edx, dword [ebp + 0x14]
push 0xb
add edx, 0x20
push 0x20
push edx
call fcn.10008db0
add esp, 0xc
mov dword [ebp - 8], 0
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
movzx eax, word [eax + ecx*2]
cmp eax, 0x20
je 0x10012229
cmp eax, 0x2e
jne case.0x10011e9d.18669
inc dword [ebp - 8]
jmp 0x10012211
in al, dx
jne 0x10012202
mov bl, 0xde
cmp bx, 0x20
sbb al, al
and al, 4
mov byte [ebp - 1], al
cmp esi, 1
jne 0x10012251
mov ecx, dword [ebp - 0x10]
cmp word [ecx], 0x2e
je 0x10012272
jmp case.0x10011e9d.18669
cmp esi, 2
jne case.0x10011e9d.18669
mov ecx, dword [ebp - 0x10]
cmp word [ecx + 2], 0x2e
jne case.0x10011e9d.18669
cmp word [ecx], 0x2e
jne case.0x10011e9d.18669
xor eax, eax
cmp eax, 0x96
ja case.0x10012282.1
movzx edx, byte [eax + 0x10012618]
jmp dword [edx*4 + 0x10012604]
xor edx, edx
mov word [ecx + esi*2], dx
jmp case.0x10012282.1
mov dword [ebp - 0x18], 0
mov ecx, dword [ebp - 0x18]
jmp 0x100122a3
mov esi, dword [ebp - 0xc]
cmp ecx, esi
mov esi, dword [ebp + 0x14]
sbb dl, dl
and dl, 0xe
add dl, 0x20
mov byte [esi + ecx + 0x20], dl
inc ecx
cmp ecx, 0xb
jb 0x100122a0
mov dl, byte [ebp - 1]
or dl, 0x20
mov byte [esi + ecx + 0x20], dl
mov esi, dword [ebp - 0xc]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x10]
jmp case.0x10012282.1
add dword [edi], esp
cmpsd dword [esi], dword es:[edi]
popfd
lcall 0, 0xec45c7
add byte [ebx - 0x6f72cd40], al
add eax, 0x32
lea edx, [eax + 0x24ce]
cmp edx, 0x2564
jbe 0x10012274
add eax, 0x32
lea edx, [eax + 0x24ce]
cmp edx, 0x2564
jbe 0x10012274
jmp case.0x10011e9d.18669
test esi, esi
je case.0x10011e9d.18669
mov edx, dword [ebp - 0x10]
lea eax, [edx + esi*2 - 2]
lea esp, [esp]
cmp word [eax], 0x2e
je 0x1001230c
sub eax, 2
dec esi
jne 0x10012300
mov dword [ebp - 0xc], esi
add edi, 6
cmp edi, dword [ebp - 0x28]
jbe 0x10011c60
mov eax, dword [ebp - 0x14]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
fimul dword [ecx + 0x11]
pop ss
loope 0x100122ea
or cl, byte [ecx]
add bl, ch
fisub word [edi + 0x5fe8c2dd]
cmpsd dword [esi], dword es:[edi]
ffree st(2)
call 0x2446ae98
cmpsd dword [esi], dword es:[edi]
ffree st(2)
call 0x2446ae98
cmp byte [eax + 0x20], 0xe5
jne case.0x10011e9d.18669
mov byte [eax + 0x20], 5
jmp case.0x10011e9d.18669
invalid
cmp dword [edx], ebp
sbb eax, 0xf04d8b0b
xor eax, eax
mov word [ecx + esi*2], ax
test esi, esi
jne case.0x10011e9d.18669
mov eax, 0x620c
cmp eax, eax
je 0x100124c8
add eax, 0x49
cmp eax, 0x620c
jbe 0x10012370
bound eax, qword [eax]
add byte [esi - 0x10], dh
jmp case.0x10011e9d.18669
mov bh, 0x2a
invalid
jns 0x1001237b
stosb byte es:[edi], al
retf 0x8b42
or bl, byte [0x8b6f23bb]
push ebp
clc
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0xc]
lea ecx, [eax + edx*2]
mov edx, dword [ebp + 0xc]
mov edi, 0x48f8
mov dword [edx], ecx
jmp case.0x10011e9d.18669
pop ebx
dec ebp
pop esi
ja 0x10012494
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
mov edx, dword [ebp + 0x14]
mov eax, dword [edx]
mov dword [ebp - 0x20], ecx
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0x10], ecx
jmp case.0x10011e9d.18669
mov dl, 0xad
shr byte [ebp + ebx*4 - 0x7d], 0x7d
fmul qword [eax]
jne 0x1001244a
add dl, dl
add dl, dl
mov byte [ebp - 2], dl
mov al, dl
and al, 0xc
cmp al, 0xc
je 0x1001245e
and dl, 3
cmp dl, 3
jne case.0x10011e9d.18669
or byte [ebp - 1], 2
jmp case.0x10011e9d.18669
mov dword [ebp - 0x24], 8
jmp case.0x10011e9d.18669
mov ecx, dword [ebp + 0x14]
mov dword [ecx + 0x4c], 0x1002eef1
jmp case.0x10011e9d.18669
mov eax, edi
sub eax, 0x7eec
je 0x100124aa
sub eax, 6
jne case.0x10011e9d.18669
mov eax, dword [ebp + 0x14]
mov dword [eax + 0x50], 0x1002f6f9
mov dword [eax + 0x58], 5
jmp case.0x10011e9d.18669
mov edx, dword [ebp + 0x14]
mov dword [edx + 0x54], 9
jmp case.0x10011e9d.18669
mov eax, dword [ebp - 0x1c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
or ebx, dword [edi + esi*2]
jns 0x100124f5
mov eax, 6
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push eax
mov al, byte [0x8baa29a0]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
sbb eax, 0x230f1001
add dword [eax], edx
add byte [0x5050505], al
add dword [84215045], eax
add al, byte [84215045]
add eax, dword [84215045]
add al, 141
dec ecx
add byte [ebx], bl
and al, 1
adc byte [esi + ebx + 0x23fb1001], bh
add dword [eax], edx
and al, byte cs:[ecx]
adc byte [edx + 621805859], al
and eax, dword [ecx]
adc byte [edi + 0x23], dl
add dword [eax], edx
mul dword [ecx]
add dword [eax], edx
movsb byte es:[edi], byte [esi]
push ds
add dword [eax], edx
out dx, al
and al, byte [ecx]
adc byte [ebp + 0x23], al
add dword [eax], edx
and al, 1
adc byte [eax + 1], cl
adc byte [ecx], dh
and eax, dword [ecx]
adc byte [eax], bh
and al, 1
adc byte [eax + 0x1d], cl
add dword [eax], edx
loope 0x1001257d
add dword [eax], edx
aam 0x24
add dword [eax], edx
mov dr0, ecx
adc byte [eax], al
adc dl, byte [edx]
adc dl, byte [edx]
adc al, byte [ecx]
adc dl, byte [edx]
adc dl, byte [edx]
adc al, byte [edx]
adc dl, byte [edx]
adc dl, byte [edx]
adc al, byte [ebx]
adc dl, byte [edx]
adc dl, byte [edx]
adc al, byte [edx + edx]
adc dl, byte [edx]
adc dl, byte [edx]
add eax, 303174162
adc dl, byte [edx]
adc dl, byte [edx]
adc al, byte [303174162]
adc al, byte [esi]
adc dl, byte [edx]
adc dl, byte [edx]
adc al, byte [edi]
adc dl, byte [edx]
adc dl, byte [edx]
adc cl, byte [eax]
adc dl, byte [edx]
adc dl, byte [edx]
adc cl, byte [ecx]
adc dl, byte [edx]
adc dl, byte [edx]
adc cl, byte [edx]
adc dl, byte [edx]
adc dl, byte [edx]
adc cl, byte [ebx]
adc dl, byte [edx]
adc dl, byte [edx]
adc cl, byte [edx + edx]
adc dl, byte [edx]
adc dl, byte [edx]
or eax, 303174162
adc cl, byte [esi]
adc dl, byte [edx]
adc dl, byte [edx]
adc cl, byte [edi]
adc dl, byte [edx]
adc dl, byte [edx]
adc dl, byte [eax]
adc dl, byte [edx]
adc dl, byte [edx]
adc dl, byte [ecx]
nop
mov dword [0x2610011f], eax
pop ds
add dword [eax], edx
loop 0x100125f4
add dword [eax], edx
mov eax, 0xc810011f
pop ds
add dword [eax], edx
mov ebx, dword [edi]
add dword [eax], edx
xor eax, 0x100120
push es
push es
push es
push es
add dword [esi], eax
push es
push es
push es
add al, byte [esi]
push es
push es
push es
add eax, dword [esi]
push es
push es
push es
add al, 6
push es
push es
push es
add eax, 579469195
add dword [eax], edx
xchg ecx, eax
and al, byte [ecx]
adc bh, cl
and al, byte [ecx]
adc cl, bl
and al, 1
adc bl, bl
and al, byte [ecx]
adc byte [eax], al
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 1
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 2
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 3
int3